Não, o título não está errado, é Direct2D mesmo, nada de Direct3D. Essa é a nova API para desenvolvimento de gráficos 2D no Windows 7, o objetivo dela é substituir as ultrapassadas e lentas GDI e GDI+, que atualmente são as responsáveis pelos efeitos 2D que você vê na GUI do Windows, e às vezes até em alguns joguinhos mais simples. O recurso foi pouco comentado, por ser algo mais interno no sistema, por isso vamos tentar escrever um pouquinho sobre ele hoje.
Por que substituir?
A GDI é a API responsável pela renderização e exibição de gráficos no Windows desde suas primeiras versões, ou seja, ela é muito antiga, e por isso já recebeu algumas melhorias, que foram incluídas na GDI+, sucessora da GDI que foi introduzida no Windows XP e trouxe grandes melhorias, como antialiasing de gráficos 2D, criação de gradientes e suporte muito melhor aos formatos de imagem como o JPEG e o PNG (inclusive foi na GDI+ que ocorreu a famosa falha que poderia fazer com que a exibição de uma simples imagem JPEG na internet permitisse a instalação de um malware no sistema afetado). Além de tudo isso, ela trouxe melhorias nas transparências, adicionando um alpha channel ao formato de cores utilizado. Todas essas melhorias podem ser vistas na interface do Windows XP, principalmente se ela for comparada à dos seus antecessores. Porém, apesar de tudo isso, ela continua tendo algums problemas, como a falta de recursos mais avançados, e a falta de desempenho, que é justificada pelo fato de a GDI não ser diretamente acelerada pelo GPU.
É importante explicar também que já existiu outra API de desenvolvimento 2D com aceleração por hardware, o DirectDraw, mas ele foi descontinuado no DirectX 9.0, e seu uso não é mais recomendado (apesar de ser absolutamente possível).
O que muda?
O Direct2D trouxe várias melhorias, mas algumas são muito técnicas, e por o público do Guia não ser em sua grande maioria formada por programadores, não adianta citar algumas coisas, então citaremos as principais melhorias:
- Aceleração por hardware
- O Direct2D é totalmente acelerado por hardware, permitindo um excelente desempenho, além disso, caso a aceleração por hardware não esteja disponível, automaticamente á ativada a renderização por software.
- Facilidade de operar juntamente com a GDI, GDI+ e o Direct3D
- O Direct2D pode operar tranquilamente com a GDI e GDI+, principalmente para prover retrocompatibilidade, e evitar que se tenham que desenvolver novamente os programas usando as novas tecnologias, que às vezes não são necessárias. Ele também funciona com o Direct3D, o que facilita, por exemplo, a criação de um HUD em um jogo, por exemplo.
- Várias melhorias na renderização de objetos e fontes
- Entre as melhorias encontram-se melhorias no antialiasing, no sistema de coordenadas, criação de funções para execução mais simples de várias operações com as formas geométricas, renderização de fontes ClearType, e muitas outras que facilitarão muito o desempenho.
Além disso, foram adicionadas melhorias na forma de programar. O objetivo dos desenvolvedores do Direct2D foi manter o código compatível com linguagens nativas, como o C++, e também com as intepretadas, como as da plataforma .NET, criar uma API capaz de renderizar gráficos em alta performance, utilizando a GPU para isso, liberando o CPU para outras funções, manter o código simples (nas palavras dos desenvolvedores: “BeginDraw/Draw/EndDraw”), utilizar o mínimo possível de recursos do sistema, exibir gráficos de alta qualidade, com o mínimo de serrilhado possível, e focar na facilidade de uso, utilizando-se bastante de técnicas de programação orientada a objetos semlhantes às usadas no DirectX, mas sem usar à tradicional interface COM.
O que eu preciso para rodar o Direct2D?
O Direct2D será introduzido no Windows 7, mas será compatível com o Windows Vista (a compatibilidade com o Windows XP ainda está sendo estudada pelo time de desenvolvimento, mas a princípio, não existirá). É necessária também uma placa de vídeo com suporte ao Direct3D 10.1 para rodar nativamente, ou então, com suporte ao Direc3D 9.0c para poder rodar de forma emulada, tudo isso pois ele roda em cima do Direct3D.
O Direct2D é mais uma melhoria ‘escondida’ no Windows 7 que certamente fará diferença, já que provavelmente muitos programas usarão seus recursos para criar GUIs mais ‘atraentes’ e até mesmo jogos 2D terão seu desenvolvimento facilitado.