Meio Bit » Arquivos » Software » Windows 7 Direct2D e DirectWrite: Vetores e textos acelerados, baby!

Windows 7 Direct2D e DirectWrite: Vetores e textos acelerados, baby!

09/02/2009 às 3:37

Eu ainda estou assistindo aos vídeos de palestras do PDC 2008. O material é bom, mas fica o aviso que ele pode ficar bastante técnico. Recomendo um browser aberto para pesquisar termos e mesmo o MSDN quando surgir dúvidas.

Uma novidade que virá de forma nativa no Windows 7 é a nova API do DirectX com mais duas adições: Direct2D e DirectWrite. É a maior expansão do DirectX desde a introdução do shaders programáveis, 5 a 7 anos atrás. Construídos por cima do Direct3D, assim como o Windows Presentation Foundation (WPF), essas novas Application Programming Interfaces (APIs) preenchem um espaço entre a aceleração em hardware avançada do Direct3D nativo e a facilidade de acesso fornecida pelo WPF, disponível a partir do .Net Framework 3.0.

Direct2D

Dd370987.ovw_01(en-us,VS.85)

Para entender melhor os objetivos de uma API 2D, fui atrás da melhor fonte possível, a documentação técnica no MSDN: Direct2D Overview. Pelo que pude entender, é dar aos desenvolvedores mais uma opção de exibição gráfica nativa, além do GDI e GDI+ e o super-poderoso Direct3D.

1-1-2002 07-37-09

Para explicar melhor, uma tradução livre do público-alvo:

1. “Desenvolvedores de aplicativos empresariais de larga escala e nativos.

Ou seja, eles querem atender um público corporativo da plataforma Windows. Aquele pessoal que faz software de controle de estoque, folha de pagamento e gerência de cadeias de restaurantes ou programas para controlar chão de fábrica. Sim, as interfaces desse tipo de aplicativo precisam evoluir e quem demanda isso são os usuários. Em tempos de iPhones, xPerias e N95s, a exigência aumenta gradativamente.

2. “Desenvolvedores que criam kits de controles e bibliotecas para serem consumidos por outros desenvolvedores.

Os parceiros comerciais vão deitar e rolar para criar suítes de componentes, classes e vários kits de desenvolvimento para que o foco do desenvolvedor corporativo seja na resolução do problema e não no aspecto visual do aplicativo.

3. “Desenvolvedores que necessitam renderização de gráficos 2D no servidor.

Renderização no servidor. Esse eu achei interessante. Alguém aí pensou em gráficos via Cloud Computing e os novos serviços de Office Online, Windows Azure e aplicativos sendo remotamente renderizados e a máquina local recebendo parte dos gráficos já mastigados? Pense em aplicativos mobile, ao economizar a energia do processamento local com alguns gráficos vindo já prontos. O desenvolvedor terá a opção de quando usar o processamento do cliente ou servidor.

Uma das motivações descritas na documentação é fornecer renderização de gráficos como um serviço. Um netbook conectado a 1 Mbps pode receber perfeitamente gráficos 2D renderizados remotamente. Ou mesmo aplicações parcialmente conectadas, certas funcionalidades ficam disponíveis somente quando o usuário estiver online e são descarregados no equipamento do usuário.

4. “Desenvolvedores que usam Direct3D e precisam de uma API simples, de alta performance para gráficos 2D e texto, renderização de menus, elementos de interface e HUDs (heads-up displays).

Basta olhar um RPG ou um jogo de estratégia e você verá dezenas de informações disponíveis ao jogador. A idéia, pelo visto, é simplificar esse desenvolvimento para que o foco seja justamente na criação da interface e sua usabilidade, não em sua programação.

Suavização de gráficos será um dos recursos disponíveis. E o melhor de tudo é que será compatível com hardware DirectX 9.0 e ainda terá um modo software. Ao invés de usar a CPU para gerar as janelas, plotar gráficos de planilhas e praticamente tudo mais que você vê no desktop, os programadores poderão usar as GPUs para isso. E apenas lembrá-los, que Intel e AMD irão lançar plataformas com CPU + GPU integrados nos próximos anos. Isso abre enormes possibilidades de otimização. Por exemplo, enquanto o núcleo GPU plota os gráficos e cuida dos efeitos visuais, um núcleo de CPU faz as contas matemáticas do aplicativo, ou calcula decisões de inteligência artificial.

9-2-2009 00-52-55_gdi

Renderização rápida, mas sem melhorias gráficas.

9-2-2009 00-53-54_gdiplus

A qualidade melhorou, mas a performace ficou um lixo.

9-2-2009 00-59-12_2Dsft

Boa qualidade e performance aceitável.

9-2-2009 00-59-29_2Dhrd

Aceleração em hardware. Qualidade e performance.

As imagens acima mostram os diferentes tipos de renderização e sua qualidade x performance.

Se você programa em C++ e quer seguir um tutorial rápido e tem o Visual Studio e o Windows 7, veja o Direct2D QuickStart (Atenção: área recheada de código, script kids, fiquem longe).

DirectWrite

Dd371554.intro_01(en-us,VS.85)

Texto? Sim, amigos, texto. Pode parecer incrível, mas há uma enorme ciência por trás da exibição de texto de forma clara nas telas de hoje. E o DirectWrite veio justamente auxiliar os desenvolvedores na árdua tarefa de mostrar informação escrita de forma agradável.

A idéia por trás do DirectWrite é ser uma API flexível para diferentes caracteres, fontes, formas, independente do hardware e dar aos desenvolvedores recursos de qualidade do OpenType impossíveis com o GDI ou Windows Forms. Para a maioria de nós, texto é algo que passa despercebido até você encontrar um texto terrivelmente serrilhado por falta de suavização ou espaçamento errado.

Dd368048.CustomText(en-us,VS.85)

O DirectWrite possui várias opções de renderização de fontes, sendo que o padrão é o ClearType com sub-pixels. Essa tecnologia está disponível a partir do Windows Presentation Foundation no Windows Vista, segundo o MSDN. A idéia em melhorar a leitura de texto em tela é justamente uma das motivações. A maior parte do conteúdo consumido em um computador ainda é texto. E qualquer coisa acima de 2 páginas, preferimos imprimir.

9-2-2009 01-15-00

Uma das novas fontes disponíveis no Windows 7 chama-se Gabriola, e ela mostra uma série de recursos do OpenType e aceleração do DirectWrite, que usa o Direct2D e cria uma abstração única para todos os tipos de uso de fontes. Essencialmente, com o Windows 7, a Microsoft unificou o uso de fontes.

9-2-2009 01-12-32

Uma lista dos recursos disponíveis do OpenType dentro do DirectWrite: velocidade de leitura aumentada em 5% apenas por causa da definição e clareza de fontes.

Se o assunto interessa, não deixe de conferir o vídeo Windows 7: Introducing Direct2D and DirectWrite.

relacionados


Comentários