Pergunta

Alguém aí criou uma versão de GDI32.dll Isso aproveita a aceleração de hardware disponível na máquina? gdiplus.dll?

Começando com o Windows Vista, o GDI não é mais acelerado de hardware. (GDI+ nunca foi acelerado de hardware). Sem a Microsoft Fixing GDI (e GDI+) para poder funcionar bem no computador: aplicativos nativos (C ++ MFC, Delphi, etc) e aplicativos gerenciados WinForms continuarão a funcionar mal para sempre.

Enquanto eu poderia Use o Direct2D para aplicativos de negócios, não posso controlar o fato de que o ambiente de desenvolvimento ainda cria controles, com décadas de código de suporte da biblioteca, que assume a presença de GDI.


Compatibilidade do aplicativo: interface de dispositivo gráfico (GDI):

Os primitivos de GDI, como Lineto e Rectange, agora são renderizados em software em vez de hardware de vídeo, o que simplifica bastante os drivers de exibição.

Windows e memória de vídeo

No XP, o GDI é acelerado em vários graus, dependendo de como o sistema operacional está configurado ou do driver do dispositivo (para detalhes, consulte Vinculando versus punir). No Vista, o GDI não é acelerado pela GPU

Comparando Direct2D e GDI

Como resultado, no Windows Vista, o driver de exibição GDI DDI foi alterado para ser implementado apenas por um driver fornecido pela Microsoft, o driver de tela canônica (CDD). O GDI renderizado para um bitmap de memória do sistema. As regiões sujas foram usadas para atualizar a textura da memória de vídeo que o gerenciador de janelas usa para compor a área de trabalho.

Foi útil?

Solução

Parece que o Vista foi um caso especial na história do desempenho do GDI. Ambos os artigos abaixo mostram que o futuro do GDI parece brilhante novamente.

http://msdn.microsoft.com/en-us/library/ff729480%28vs.85%29.aspx

O GDI é acelerado de hardware no Windows XP e acelerado no Windows 7 quando o gerenciador de janelas da área de trabalho está em execução e um driver WDDM 1.1 está em uso. O Direct2D é acelerado em quase qualquer driver WDDM e independentemente de o DWM estar em uso. No Vista, o GDI sempre renderá na CPU.

http://blogs.msdn.com/b/e7/archive/2009/04/25/engineering-windows-7-for-graphics-permance.aspx

Com base nas estatísticas de aplicativos do mundo real, ... trabalhamos com nossos parceiros de IHV gráficos para fornecer suporte em seus drivers para acelerar as operações de GDI mais usadas.

Outras dicas

Bem, sim, o GDI é a API "funciona em qualquer lugar a qualquer momento" para renderizar gráficos. Ele coloca demandas muito baixas no driver de vídeo. Todo mundo acertou há muito tempo. O que demorou um pouco, recebi uma lembrança distinta de uma placa de vídeo ATI Mach que não me deu um fim. Isso me impediu de comprar produtos ATI por um bom tempo.

Todo mundo também acertou o DirectX há muito tempo. Está se aproveitando no modelo de renderização do WPF, ele depende completamente do DirecTX para fazer o trabalho. Milcore é o nome do calço. Você não o receberá até comprar o modelo de programação WPF.

O que você quer dizer com aceleração de hardware? Quero dizer, o GDI não faz muito além de blits de varredura, mas esses foram acelerados em hardware. E, dado que o Vista e o Windows 7 não são terrivelmente mais lentos com aplicativos de desktop, ainda são.

O GDI ainda faz com que os drivers de vídeo façam todo o levantamento pesado; portanto, se o GDI não for acelerado de hardware, então é a falha dos fornecedores do driver, não do GDI.

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