Sobre Direct2D

Este tópico apresenta Direct2D, uma API que fornece aos desenvolvedores do Win32 a capacidade de executar tarefas de renderização de elementos gráficos 2D com desempenho superior e qualidade visual.

O que é Direct2D?

Direct2D é uma API de gráficos 2D acelerada por hardware e modo imediato que fornece renderização de alto desempenho e alta qualidade para geometria 2D, bitmaps e texto. A API Direct2D foi projetada para interoperar com o código existente que usa GDI, GDI+ou Direct3D.

Direct2D foi projetado principalmente para uso pelas seguintes classes de desenvolvedores:

  • Desenvolvedores de aplicativos nativos de grande escala empresarial.
  • Desenvolvedores que criam kits de ferramentas de controle e bibliotecas para consumo por desenvolvedores downstream.
  • Desenvolvedores que exigem renderização do lado do servidor de elementos gráficos 2D.
  • Os desenvolvedores que usam elementos gráficos Direct3D e precisam de renderização de texto e 2D simples e de alto desempenho para menus, elementos de interface do usuário e HUDs (Heads-up Displays).

Por que Direct2D?

As principais motivações para criar uma nova API de gráficos 2D no Microsoft Windows incluem o seguinte:

  • Para acompanhar o nível crescente de riqueza visual que os usuários do Windows estão acostumados.
  • Para permitir que os desenvolvedores escrevam código de renderização 2D que é dimensionado diretamente com o hardware de processamento gráfico do computador em que ele está sendo executado.
  • Para permitir que os desenvolvedores escrevam código para renderizar elementos gráficos 2D que podem ser executados no contexto de um serviço.

Nos últimos anos, os usuários finais começaram a esperar maior fidelidade visual em experiências digitais. Essa tendência se reflete nos eletrônicos de consumo. Dispositivos GPS, dispositivos de reprodução de mídia, celulares e câmeras digitais oferecem experiências consistentemente mais ricas ano após ano. Essa tendência também pode ser vista na diversidade de conteúdo gráfico em filmes, televisão, videogames e na Web. Para acompanhar essas alterações, os desenvolvedores são constantemente solicitados a levar seus aplicativos existentes do Windows para o próximo nível de riqueza visual.

Os processadores gráficos em computadores Windows modernos também têm evoluído constantemente, impulsionados por avanços em elementos gráficos de videogame e partes da experiência do Windows, como o Windows Media Center e o Aero. Alguns aplicativos do Windows podem aproveitar as GPUs modernas usando o Microsoft Direct3D e o WPF (Windows Presentation Foundation). Embora o Direct3D atenda a aplicativos gráficos 3D de alto nível e o WPF atenda às necessidades dos desenvolvedores do .NET, há lacunas para desenvolvedores que têm grandes bases de código existentes de código de renderização com base em GDI e GDI+ ou que desejam incorporar gráficos 2D de alta qualidade em seus aplicativos baseados em Direct3D.

Por fim, a necessidade de uma API gráfica que pode ser usada em um serviço tornou-se um requisito emergente para desenvolvedores que trabalham em cenários de desenvolvimento corporativo e web. As APIs de renderização existentes se concentram na renderização do lado do cliente em uma única sessão de usuário. Dessa forma, eles podem ficar aquém em áreas de robustez e escalabilidade quando usadas em um contexto de serviço. Uma nova API é necessária para resolver isso.

Alto desempenho com disponibilidade máxima

Direct2D é uma biblioteca de modo de usuário criada usando a API do Direct3D 10.1. Isso significa que Direct2D aplicativos se beneficiam da renderização acelerada por hardware em GPUs tradicionais modernas. A aceleração de hardware também é obtida no hardware anterior do Direct3D 9 usando a renderização direct3D de nível 10-9. Essa combinação fornece excelente desempenho em hardware gráfico em computadores Windows existentes.

Observação

Começando com Windows 8, Direct2D é criado usando a API do Direct3D 11.1.

 

O diagrama a seguir mostra a arquitetura em camadas de Direct2D.

diagrama da arquitetura em camadas direct2d

Para cenários em que o uso da aceleração de hardware não é viável, Direct2D inclui um rasterizador de software de alto desempenho. Ao renderizar em software, os aplicativos que usam Direct2D experimentam um desempenho de renderização substancialmente melhor do que com GDI+ e com qualidade visual semelhante. O rasterizador de software também foi projetado para uso em um contexto de serviço.

O conteúdo renderizado usando Direct2D também pode ser exibido remotamente usando a infraestrutura rdp no sistema operacional Windows 7. Os desenvolvedores podem selecionar se a renderização é manipulada pela GPU no computador de exibição ou renderizada localmente e transmitida como bitmaps. Essa escolha pode ser feita com base na taxa de preenchimento necessária e na quantidade de primitivos gráficos renderizados. Quando o computador de exibição está executando um sistema operacional anterior ao Windows 7, a renderização de exibição remota é executada transmitindo bitmaps pela rede.

Ao fornecer uma única API que combina o desempenho do Direct3D e a alta disponibilidade fornecendo fallback de software, área de trabalho remota e renderização de serviço, Direct2D permite que os desenvolvedores tenham uma única implementação para renderização de alto desempenho em muitos cenários diferentes.

Qualidade visual

Os aplicativos que usam Direct2D para elementos gráficos podem fornecer uma qualidade visual maior do que o que pode ser obtido usando a GDI. Direct2D usa suavização por primitiva para fornecer curvas e linhas mais suaves no conteúdo renderizado. Também há suporte completo para transparência e mesclagem alfa ao renderizar primitivos 2D. As imagens a seguir comparam o conteúdo de alias renderizado usando GDI (à esquerda) com conteúdo suavizado renderizado por Direct2D (à direita).

ilustração de curvas e linhas renderizadas em gdi e em direct2d

Os desenvolvedores podem especificar a renderização com alias de elementos gráficos vetoriais. Isso é usado em cenários em que é necessário ajustar a limites de pixel rígido, como elementos de interface do usuário, como ponteiros ou réguas, se o estilo GDI de saída precisar ser correspondido ou se a suavização for executada downstream no processo de renderização por meio da Suavização multisample ou algum outro mecanismo.

Interoperabilidade

A integração da renderização baseada em Direct2D é facilitada para os desenvolvedores por meio da interoperabilidade no nível da superfície com GDI e Direct3D. Os aplicativos que renderizam conteúdo principalmente com GDI, GDI+ou Direct3D podem começar usando Direct2D para renderizar áreas específicas de seu aplicativo e, ao longo do tempo, mover para um modelo em que a renderização é executada principalmente por meio de Direct2D, usando a GDI principalmente para plug-ins ou extensibilidade herdada.

Direct2D também facilita o uso de DirectWrite para texto de alta qualidade e os recursos avançados de imagem do Componente de Imagem do Microsoft Windows (WIC).

Para obter mais informações sobre Direct2D interoperabilidade, consulte a seção Interoperabilidade do SDK do Direct2D.

Resumo

O Microsoft Direct2D permite que os desenvolvedores criem recursos gráficos 2D em seus aplicativos que fornecem melhor qualidade visual em relação à GDI e características de desempenho que são dimensionadas com GPUs modernas. O modelo de interoperabilidade Direct2D permite que os desenvolvedores migrem seletivamente partes de seu aplicativo de cada vez junto com a renderização baseada em GDI, GDI+ou Direct3D.

início rápido do Direct2D para Windows 8

Visão geral de API do Direct2D