Visão geral da arquitetura de gráficos do Windows
O Windows fornece várias APIs C++/COM para elementos gráficos. Essas APIs são mostradas no diagrama a seguir.
- A GDI (Graphics Device Interface) é a interface gráfica original do Windows. A GDI foi gravada primeiro para Windows de 16 bits e, em seguida, atualizada para Windows de 32 bits e 64 bits.
- O GDI+ foi introduzido no Windows XP como sucessor do GDI. A biblioteca GDI+ é acessada por meio de um conjunto de classes C++ que encapsulam funções C simples. O .NET Framework também fornece uma versão gerenciada do GDI+ no namespace System.Drawing.
- O Direct3D dá suporte a elementos gráficos 3D.
- Direct2D é uma API moderna para elementos gráficos 2D, sucessora de GDI e GDI+.
- DirectWrite é um mecanismo de rasterização e layout de texto. Você pode usar gdi ou Direct2D para desenhar o texto rasterizado.
- A DXGI (DirectX Graphics Infrastructure) executa tarefas de baixo nível, como apresentar quadros para saída. A maioria dos aplicativos não usa DXGI diretamente. Em vez disso, ele serve como uma camada intermediária entre o driver gráfico e o Direct3D.
Direct2D e DirectWrite foram introduzidos no Windows 7. Eles também estão disponíveis para o Windows Vista e o Windows Server 2008 por meio de uma Atualização de Plataforma. Para obter mais informações, consulte Atualização de plataforma para Windows Vista.
Direct2D é o foco deste módulo. Embora o GDI e o GDI+ continuem a ter suporte no Windows, Direct2D e DirectWrite são recomendados para novos programas. Em alguns casos, uma combinação de tecnologias pode ser mais prática. Para essas situações, Direct2D e DirectWrite são projetados para interoperar com a GDI.
As próximas seções descrevem alguns dos benefícios do Direct2D.
Aceleração de hardware
O termo aceleração de hardware refere-se a cálculos gráficos executados pela GPU (unidade de processamento gráfico), em vez da CPU. As GPUs modernas são altamente otimizadas para os tipos de computação usados na renderização de gráficos. Em geral, quanto mais desse trabalho for movido da CPU para a GPU, melhor.
Embora a GDI dê suporte à aceleração de hardware para determinadas operações, muitas operações de GDI estão associadas à CPU. Direct2D está em camadas sobre Direct3D e aproveita ao máximo a aceleração de hardware fornecida pela GPU. Se a GPU não der suporte aos recursos necessários para Direct2D, Direct2D retornará à renderização de software. No geral, Direct2D supera GDI e GDI+ na maioria das situações.
Transparência e anti-aliasing
Direct2D dá suporte à combinação alfa totalmente acelerada por hardware (transparência).
A GDI tem suporte limitado para mesclagem alfa. A maioria das funções GDI não dá suporte à mesclagem alfa, embora a GDI dê suporte à mesclagem alfa durante uma operação bitblt. O GDI+ dá suporte à transparência, mas a mesclagem alfa é executada pela CPU, portanto, não se beneficia da aceleração de hardware.
A combinação alfa acelerada por hardware também permite o anti-aliasing. Aliasing é um artefato causado pela amostragem de uma função contínua. Por exemplo, quando uma linha curva é convertida em pixels, o alias pode causar uma aparência irregular. Qualquer técnica que reduza os artefatos causados pelo aliasing é considerada uma forma de anti-aliasing. Em gráficos, o anti-aliasing é feito pela combinação de bordas com a tela de fundo. Por exemplo, aqui está um círculo desenhado pela GDI e o mesmo círculo desenhado por Direct2D.
A próxima imagem mostra um detalhe de cada círculo.
O círculo desenhado pela GDI (esquerda) consiste em pixels pretos que se aproximam de uma curva. O círculo desenhado por Direct2D (à direita) usa mesclagem para criar uma curva mais suave.
A GDI não dá suporte à suavização quando desenha geometria (linhas e curvas). A GDI pode desenhar texto anti-alias usando ClearType; mas, caso contrário, o texto GDI também é alias. O aliasing é particularmente perceptível para o texto, porque as linhas irregulares interrompem o design da fonte, tornando o texto menos legível. Embora o GDI+ dê suporte ao anti-aliasing, ele é aplicado pela CPU, portanto, o desempenho não é tão bom quanto Direct2D.
Gráficos vetoriais
Direct2D dá suporte a elementos gráficos vetoriais. Em gráficos vetoriais, fórmulas matemáticas são usadas para representar linhas e curvas. Essas fórmulas não dependem da resolução da tela, portanto, podem ser dimensionadas para dimensões arbitrárias. Elementos gráficos vetoriais são particularmente úteis quando uma imagem deve ser dimensionada para dar suporte a diferentes tamanhos de monitor ou resoluções de tela.
Avançar
O Gerenciador de Janelas da Área de Trabalho