Partilhar via


Sobre o Direct2D

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

O que é Direct2D?

O Direct2D é uma API gráfica 2D de modo imediato acelerada por hardware que fornece alto desempenho e renderização de 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.

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

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

Porquê Direct2D?

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

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

Nos últimos anos, os utilizadores finais começaram a esperar uma maior fidelidade visual nas experiências digitais. Esta tendência reflete-se na electrónica de consumo. Dispositivos GPS, dispositivos de reprodução de mídia, telefones celulares e câmeras digitais oferecem experiências consistentemente mais ricas ano após ano. Esta tendência também pode ser vista na diversidade de conteúdos gráficos no cinema, televisão, videojogos e na Web. Para acompanhar essas mudanças, 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 nos PCs Windows modernos também têm evoluído constantemente, impulsionados pelos avanços nos gráficos de videojogos e em 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 Windows Presentation Foundation (WPF). Embora o Direct3D sirva aplicativos gráficos 3D high-end e o WPF atenda às necessidades dos desenvolvedores .NET, há lacunas para desenvolvedores que têm grandes bases de código existentes de renderização de código baseado em GDI e GDI+ ou que desejam incorporar gráficos 2D de alta qualidade em seus aplicativos baseados em Direct3D.

Finalmente, a necessidade de uma API gráfica que possa ser usada em um serviço tornou-se um requisito emergente para desenvolvedores que trabalham em cenários empresariais e de desenvolvimento da Web. As APIs de renderização existentes se concentram na renderização do lado do cliente em uma única sessão de usuário. Como tal, podem ficar aquém em áreas de robustez e escalabilidade quando utilizados num contexto de serviço. Uma nova API é necessária para resolver isso.

Alto desempenho com máxima disponibilidade

O Direct2D é uma biblioteca de modo de usuário criada usando a API do Direct3D 10.1. Isso significa que os aplicativos Direct2D se beneficiam da renderização acelerada por hardware em GPUs convencionais modernas. A aceleração de hardware também é obtida em hardware Direct3D 9 anterior usando a renderização Direct3D 10-level-9. Esta combinação proporciona um excelente desempenho em hardware gráfico em PCs Windows existentes.

Observação

A partir do Windows 8, o Direct2D é criado usando a API do Direct3D 11.1.

 

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

diagrama da arquitetura em camadas Direct2D

Para cenários em que o uso da aceleração de hardware não é viável, o 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 é 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 (Remote Desktop Protocol) 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 primitivas gráficas renderizadas. 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ços, 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 gráficos podem oferecer uma qualidade visual mais alta do que a que pode ser obtida usando o GDI. O Direct2D utiliza antialiasing por primitiva para proporcionar curvas e linhas com um aspeto mais suave no conteúdo renderizado. Há também suporte total para transparência e mistura alfa ao renderizar primitivos 2D. As imagens a seguir comparam o conteúdo com alias renderizado usando GDI (à esquerda) com o conteúdo com suavização de borda renderizado pelo Direct2D (à direita).

ilustração de curvas e linhas que são renderizadas em GDI e em Direct2D

Os desenvolvedores podem especificar a renderização com alias de gráficos vetoriais. Isso é utilizado em cenários onde é necessário alinhar precisamente aos limites rígidos de pixels, como em elementos da interface do usuário, como ponteiros ou réguas, caso seja necessário corresponder ao estilo GDI de saída, ou se o antialiasing for realizado posteriormente no processo de renderização via Antialiasing Multisample ou outro mecanismo.

Interoperabilidade

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

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

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

Resumo

O Microsoft Direct2D permite que os desenvolvedores criem recursos gráficos 2D em seus aplicativos que oferecem qualidade visual aprimorada em relação ao GDI e características de desempenho que podem ser dimensionadas com GPUs modernas. O modelo de interoperabilidade Direct2D permite que os desenvolvedores migrem seletivamente partes de seus aplicativos 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 da API Direct2D