Pergunta

Eu tenho um aplicativo MFC C ++ maduro que exibe na tela e impressa usando os embrulho CDC no GDI Win32. Embora tenha sido otimizado ao longo dos anos, gostaria de substituí -lo por algo um pouco mais rápido. Os gráficos incluíam modelos de superfície triangular renderizados, polilinas e polígonos complexos e muito texto. Precisa atender aos seguintes critérios;

  • O número de vetores exibidos provavelmente será muito grande. Por exemplo, é provável que um único triângulo de superfície gere uma linhas numéricas e preenchimentos sólidos quando renderizados. Atualmente, essas informações não são armazenadas em nenhum lugar, elas são geradas e desenhadas em tempo real. O SDK deve suportar limitar o número total de vetores em buffer, ou é responsável ficar sem memória.

  • O SDK deve ser capaz de renderizar para qualquer classe derivada do CWND, incluindo classes CView e ScrollView.

  • O SDK deve suportar a impressão para qualquer dispositivo de impressão do Windows,

  • O SDK deve ser baixo o suficiente para tornar a porta a partir de chamadas de CDC / GDI de baixo nível.

  • O código aberto é sempre bom, mas um custo único para dizer US $ 2 mil, com atualizações/suporte opcionais também seria bom. Um custo de licença por usuário não é aceitável,

  • O acesso ao código -fonte seria um grande bônus, especificamente com a idéia de executar partes do SDK no Windows CE / Mobile.

  • Eu lidei currenly meu próprio gerenciamento de viewport 3D a 2D. Se um SDK de baixo nível decente não estiver disponível, um SDK de nível superior deve lidar com o poço 3D e trabalhar com milhões de triângulos, polígonos e entidades de texto em uma plataforma Windows de 32 bits.

Alguma sugestão? Listar os prós e contras específicos em sua sugestão proposta seria muito apreciada.

Foi útil?

Solução

Uma vez avaliei o FastGraph (http://www.fastgraph.com) para um projeto. Gostei nos pequenos programas de teste que escrevi, foi muito rápido. Acabamos não usando -o por razões externas (nada a ver com as bibliotecas que eu avaliei), para que não tenha mais experiência prática.

Outras dicas

Eu acho que DirectX ou Sdl vai atender às suas necessidades. Eles são projetados para 3D, mas também trabalham para 2D. Ambos o Windows CE / Mobile e o SDL também estão disponíveis para um monte de OS não-Microsoft.

Infelizmente, a compatibilidade direta com o GDI não é suportada nas bibliotecas. Mas você pode fazer o truque criando uma classe de conversor, que aceitará todos os gráficos de saída de suas classes de aplicativos projetadas por GDI e converterá o formato para atender às necessidades das classes DirectX ou SDL (dependendo do que você deseja usar).

Pessoalmente, fiz essa aula de conversor uma vez. Eu tinha um jogo escrito para o Pocket PC, usando SDL e precisava portá -lo para o dispositivo Palm. Lá eu tive que usar diferentes bibliotecas gráficas (não me lembro do nome da LIB agora), mas consegui portar todas as funções SDL para o formato necessário para a outra lib. Eu precisava alterar meu aplicativo para chamar as funções do conversor (wrapper), que encaminham a chamada para a biblioteca Palm ou Pocket PC, dependendo do dispositivo que ele está em execução no momento. Então, acho que você pode fazer o mesmo para converter GDI -> DirectX ou GDI -> SDL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top