Windows 7: Direct2D
08/02/09
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.






há 1 ano atrás
mas isso teria algum benefico em jogos?
há 1 ano atrás
Sim.
há 1 ano atrás
Interessante. Mas, em era de jogos em 3D e gráficos lindos, quem iria se preocupar com o velho e ultrapassado 2D? Ninguém. Ou seja, para games, o Direct2D é desnecessário, mas para o Windows em si ele será muito útil.
Excelente Artigo.
há 1 ano atrás
Não fale pelos outros, cara. Tem muita gente, eu incluso, que ainda curte games em 2D. Veja o Street Fighter 2 HD Remix, por ex. Aqueles gráficos são de babar, muito mais chamativos que alguns jogos com gráficos em 3D. Se pra vc isso é desinteressante, é coisa sua, mas não coloque sua opinião como absoluta pra todos.
há 1 ano atrás
Em algum momento falei que minha opinião era absoluta? Não.
há 1 ano atrás
Concordo com meu xará
há 1 ano atrás
@Joao: “Mas, em era de jogos em 3D e gráficos lindos, quem iria se preocupar com o velho e ultrapassado 2D? Ninguém.”
Uma vez que vc diz isso, se torna como se fosse uma verdade absoluta. Se não é, então vc não pode JAMAIS afirmar que NINGUÉM, ou seja, 100% da população gamer, não liga mais pra 2D. Se vc afirma isso, então vc se contradiz.
Capiche?
há 1 ano atrás
Não. Você é quem entendeu errado. Eu estou dando minha OPINIÃO. Em nenhum momento falei que estava falando por outras pessoas.
há 1 ano atrás
Todo jogo 3D, tem sua parte 2D. Crysis, a mega-produção foto-realista tem em 2D partes fundamentais, como o menu e o próprio HUD, que dentro do jogo é o sistema da nanosuit. O desenvolvimento disso é extremamente facilitado com o Direct2D.
há 1 ano atrás
Ah, mas são somente menus, e eu tiu falando do Jogo em si.
há 1 ano atrás
A seleção do ‘modo’ da nanosuit faz parte do jogo, e não dos menus, é 2D.
há 1 ano atrás
Então o menu da Nanosuit faz parte do jogo?
há 1 ano atrás
Ahn… É claro que sim? Caso você aidna não percebeu, a tela de Crysis simula a visão do personagem o tempo todo, o HUD é semelhante ao que se quer implementar nos “Future Soldiers” reais, só que obviamente, adaptado para a vida real, sem barrinha de life, mas sim sinais vitais e etc.
há 11 meses atrás
Isso SERIA(seria, porque o crysis não é, pelo menos até hoje, compativel com DX10.1, mas nada que um patch-remendo não conserte) muito util no Crysis, melhoraria bastante o desempenho, pois o Nanosuit está todo sendo “Processado” em cima do processador, se ela fosse “processada” na GPU representaria um ganho de velocidade pra quem tem um processador mais modesto, ou até mesmo pra quem tem uma placa de video high end.
há 6 meses atrás
Boas Mario,gostava de puder falar contigo via email,se possivel responde .Obrigado
há 1 ano atrás
voce esta vendo só uma aplicação, jogos, mas pra quem trabalha com aplicativos usados em corporações o 2D pode representar uma melhora significativa na interface dos programas feitos exclusivamente dentro do ambiente da empresa.
há 1 ano atrás
Estamos falando de jogos e não aplicativos.
há 1 ano atrás
eu estou falando de Direct2D, que afinal de contas é o assunto do tópico.
há 1 ano atrás
Mas nos comentários acima não se fala em aplicativos.
há 1 ano atrás
bem interessante, principalmente a aceleração via hardware.
há 1 ano atrás
Mas tem uma coisa que eu to pensando aqui, será que isso fará com que a VGA fique em estado full-load o tempo todo? Ficando então sempre com temperatura mais alta e gastando mais energia?
há 1 ano atrás
Teoricamente as GPU’s só entram em modo de gasto maximo de energia e alta performance quando em 3d, eles não seriam burros o suficientes pra implementar um recurso que ia aumentar e muito o consumo de energia sem ser necessario, não é uma caracteristica desejavel principalmente se for em portateis.
há 1 ano atrás
Se o Direct 2D é compatível apenas com o DirectX 10.1, quer dizer que as placas atuais da Nvidia não suportam esse recurso? Espero que implementem isso em uma atualização de driver, se é que isso é possível via software
há 1 ano atrás
Ops, vi que ele pode ser emulado em DirectX 9.0c
Desconsiderem meu comentário
há 11 meses atrás
Pois é cara, o recurso só funcionará plenamente pra quem tem as placas mais novas da ATI, pelo menos por enquanto…
Ele pode ser emulado sim, pra quem tem placa de video com DX9c, mas o recurso de aceleração por hardware não funcionará plenamente, ou dependendo da placa de vídeo nem funcionará, o que causará perda de performance se comparado com a API antiga (devido a implementação de novos efeitos, e aumento da precisão do AA).
há 1 ano atrás
Na minha opinião, qualquer melhoria é bem vinda, sendo 2 ou 3D, gostei do post, e fico feliz com o Windows Seven, espero poder usa-lo como sistema padrão o mais rápido possível.