O DirectX é uma interface de programação que permite que os programas (como jogos) se comuniquem com o hardware do computador (como a placa de vídeo). Existem várias versões do DirectX disponíveis e explicaremos neste tutorial quais são as principais diferenças entre elas.
Versão do DirectX
|
Número da versão
|
Sistema Operacional
|
DirectX 1.0
|
4.02.0095
| |
DirectX 2.0 - 2.0a
|
4.03.00.1096
|
Windows 95 OSR2 e NT 4.0
|
DirectX 3.0 - 3.0a
|
4.04.0068-69
|
Windows NT 4.0 SP3
|
DirectX 4.0
|
Nunca lançado
| |
DirectX 5.0
|
4.05.00.0155
| |
DirectX 5.0
|
4.05.01.1721 - 1998
|
Windows 98
|
DirectX 6.0
|
4.06.02.0436
|
Windows 98 SE
|
DirectX 7.0
|
4.07.00.0700
|
Windows 2000 e ME
|
DirectX 7.0a
|
4.07.00.0716
| |
DirectX 8.0
|
4.08.00.0400
| |
DirectX 8.1
|
4.08.01.0810 e 4.08.01.0881
|
Windows XP e Windows Server 2003
|
DirectX 9.0
|
4.09.0000.0900
| |
DirectX 9.0a
|
4.09.0000.0901
| |
DirectX 9.0b
|
4.09.0000.0902
| |
DirectX 9.0c
|
4.09.0000.0904
|
Windows XP SP2 e Windows Server 2003 SP1
|
DirectX 10
|
6.00.6000.16386
|
Windows Vista
|
DirectX 10.1
|
6.00.6001.18000
|
Windows Vista SP1 e Windows Server 2008
|
DirectX 10.1
|
6.00.6002.18005
|
Windows Vista SP2 e Windows Server 2008 SP2
|
DirectX 11
|
6.01.7600.16385
|
Windows 7 e Windows Server 2008 R2
|
DirectX 11
|
6.00.6002.18107
|
Windows Vista SP2 e Windows Server 2008 SP1
|
DirectX 11.1
|
6.02.9200.16384
|
Windows 8, Windows Server 2012 e Windows RT
|
DirectX 11.2
|
6.03.9600.16384
|
Windows 8.1, Windows Server 2012 R2 e Windows RT
|
DirectX 12
|
10.00.10240.16384
|
Windows 10
|
Características
O DirectX 6 trouxe como principal novidade o recurso de mapeamento de relevo mapeado pelo ambiente (“environment-mapped bump mapping”). Com esse recurso, é possível criar imperfeições na superfície do objeto 3D mais facilmente, tornando-o mais realista.
O DirectX 7.0 suporta mapeamento de ambiente, possibilitando que os usuários criem efeitos visuais semelhantes ao reais como reflexos na água ou luz atravessando o vidro de uma janela. A API também suporta características menores como stereo goggles. Além disso, aplicações utilizando a API DirectX 7.0 rodam cerca de 20% mais rápido do que as aplicações que utilizam a versão 6.1, melhorando a performance do game de maneira geral.
Efeitos de áudio também foram melhorados com novos software algoritmos para som em 3-D, garantindo maior flexibilidade para o gerenciamento de funcionalidade de mixagem do hardware. A DirectX 7.0 oferece aceleração do hardware para API DirectMusic® suportando placas de som e permitindo aos usuários criar trilhas sonoras mais complexas. A DirectMusic abre uma nova geração de sintetizadores de ondas que suportam o download de músicas em dois padrões (DLS), fornecendo aos usuários maior controle sobre os procedimentos do som.
Pela primeira vez, a nova versão do DirectX abre a API para um novo grupo de desenvolvedores ao oferecer suporte de linguagem para o sistema de desenvolvimento Microsoft Visual Basic®. Para oferecer o mesmo acesso de funcionalidades multimídia de alta performance oferecida pelos desenvolvedores C, o DirectX 7.0 Software Development Kit (SDK) inclui código de amostra e controles de ajuda para tornar o DirectX acessível e fácil de entender para programadores que trabalham com o Visual Basic.
Com o DirectX 8, dois novos recursos atualmente muito conhecidos entraram em cena, tornando as imagens 3D muito mais realistas: o sombreamento de pixels (“pixel shader”) e o sombreamento de vértices (“vertex shader”). Objetos 3D são criados usando centenas ou mesmo milhares de polígonos, tais como triângulos e quadrados. Sobre esses triângulos ou quadrados, são aplicadas texturas (superfícies) ou cores, formando o objeto tridimensional. Com o sombreamento de vértices o programa 3D é capaz de mudar as características de cada vértice de cada polígono do objeto. Já com o sombreamento de pixels, o programa é capaz de mudar as características de cada pixel (ponto) de cada polígono. Antes da existência desses recursos, a mudança dessas características não era possível, ou seja, só era possível a mudança das características do polígono inteiro, o que afetava todos os seus pontos em conjunto. Portanto, com estes dois novos recursos as imagens passaram a ser muito mais realistas, já que cada ponto de cada polígono passou a ser programável.
O DirectX 8.0 permitia que o sombreamento de pixels fosse programado com até 12 instruções por vez. Este limite foi considerado insuficiente e logo o DirectX foi revisado para a versão 8.1 para permitir o uso de 22 instruções por vez.
Para aumentar o desempenho e a qualidade dos objetos tridimensionais, o DirectX 9.0 foi lançado suportando o modelo Shader 2.0, onde o sombreamento de pixels pode usar até 96 instruções por vez. O modelo Shader 3.0 foi introduzido como DirectX 9.0c e permite o uso de até 65.535 instruções por vez.
O DirectX 11 trouxe duas inovações importantes. A primeira foi o suporte à técnica de GPGPU, que consiste em usar o chip gráfico para executar instruções “normais” de processamento para acelerar o processamento de programas comuns e não somente o de jogos. A segunda foi o suporte nativo ao recurso de tesselação, que permite dividir cada polígono em partes ainda menores para obter um maior realismo do objeto, quando usado em conjunto com o recurso de mapeamento de deslocamento. Em outras palavras, permite objetos mais realistas sem diminuir o desempenho.
O DirectX 10 trouxe o modelo Shader 4.0. Esse modelo promoveu uma mudança importante na arquitetura dos chips gráficos. Até os chips gráficos baseados no DirectX 9.0c, o chip tinha unidades de processamento separadas para processar sombreamento de pixels e sombreamento de vértices. Em algumas circunstâncias em que todas as unidades de sombreamento de pixels estavam sendo usadas, as unidades de sombreamento de vértices ficavam ociosas e novas instruções de sombreamento de pixels tinham de esperar, já que todos os processadores de sombreamento de pixels estavam ocupados, mesmo que os processadores de sombreamento de vértices estivessem disponíveis para uso. Nos chips a partir do DirectX 10, as unidades de processamento são genéricas e podem ser usadas para processar qualquer tipo de informação, resolvendo o problema que acabamos de explicar: em chips gráficos a partir do DirectX 10, as instruções precisam aguardar apenas quando todos os processadores estão ocupados, independente do tipo de instrução. Esta arquitetura é conhecida como arquitetura unificada de sombreamento.
Efeitos de áudio também foram melhorados com novos software algoritmos para som em 3-D, garantindo maior flexibilidade para o gerenciamento de funcionalidade de mixagem do hardware. A DirectX 7.0 oferece aceleração do hardware para API DirectMusic® suportando placas de som e permitindo aos usuários criar trilhas sonoras mais complexas. A DirectMusic abre uma nova geração de sintetizadores de ondas que suportam o download de músicas em dois padrões (DLS), fornecendo aos usuários maior controle sobre os procedimentos do som.
Pela primeira vez, a nova versão do DirectX abre a API para um novo grupo de desenvolvedores ao oferecer suporte de linguagem para o sistema de desenvolvimento Microsoft Visual Basic®. Para oferecer o mesmo acesso de funcionalidades multimídia de alta performance oferecida pelos desenvolvedores C, o DirectX 7.0 Software Development Kit (SDK) inclui código de amostra e controles de ajuda para tornar o DirectX acessível e fácil de entender para programadores que trabalham com o Visual Basic.
O DirectX 10 também introduziu um novo tipo de sombreamento, de geometria, e outros recursos para transferir mais processamento do processador da máquina para o chip gráfico. Uma explicação mais detalhada a respeito dos principais novos recursos introduzidos pelo DirectX 10 pode ser encontrada no documento técnico da NVIDIA sobre o DirectX 10 (http://www.clubedohardware.com.br/download/docs/Microsoft_DirectX_10_Technical_Brief.pdf).
O DirectX 12 traz duas novidades importantes. A primeira é a possibilidade de programação em baixo nível, isto é, o envio de instruções para o processador gráfico diretamente, o que aumenta o desempenho caso o jogo lance mão desta técnica. Outras modificações foram feitas para melhorar a comunicação do DirectX com o processador gráfico (GPU) e com o processador da máquina (CPU), a fim de minimizar momentos em que núcleos de processamento ficam ociosos. Em outras palavras, a principal novidade do DirectX 12 é um aumento de desempenho (desde, claro, tanto o jogo, o sistema operacional e o hardware suportem DirectX 12). Uma explicação mais detalhada pode ser encontrada no blog da Microsoft (http://blogs.msdn.com/b/directx/archive/2014/03/20/directx-12.aspx).
Com o DirectX 11.1, a Microsoft adicionou 21 novidades, que podem ser vistas na documentação técnica (https://msdn.microsoft.com/pt-br/library/windows/desktop/hh404562(v=vs.85).aspx). As novidades são extremamente técnicas e, a bem da verdade, servem apenas para permitir a nova interface gráfica introduzida no Windows 8.
Já o DirectX 11.2 traz dez novas funcionalidades, sendo a mais divulgada o recurso de bloco, que é explicado e demonstrado nesta apresentação da Microsoft (http://channel9.msdn.com/Events/Build/2013/4-063). Em resumo, ele permite alocar menos memória por recurso, aumentando o desempenho de jogos. O detalhamento das novas funções do DirectX 11.2 pode ser visto aqui (https://msdn.microsoft.com/pt-br/library/windows/apps/bg182880.aspx).
Uma comparação lado a lado entre os principais recursos do DirectX 9, 10 e 11 pode ser vista aqui (https://technet.microsoft.com/pt-br/ff476876(v=vs.71)). A segunda grande novidade é o suporte a múltiplas placas de vídeo diretamente, sem ser por soluções proprietárias como o SLI e o CrossFire, permitindo a mistura de placas de vídeo de fabricantes e especificações diferentes. Para isso, os chips gráficos precisam ser DirectX 12, você deve estar rodando um sistema operacional com suporte ao DirectX 12 e os jogos precisam ser DirectX 12. Este é um assunto importante e pretendemos fazer uma análise completa para verificarmos se ele realmente funciona e o ganho de desempenho esperado. Outro detalhe do DirectX 12 é que ele é suportado em todas as plataformas onde o Windows 10 está disponível: computador, tablet e smartphone. Informações mais detalhadas estão disponíveis (https://msdn.microsoft.com/pt-br/library/windows/desktop/dn899228(v=vs.85).aspx).
Versão do DirectX
|
Modelo de placa de vídeo compatível
|
DirectX 1.0
|
Placa de Vídeo
|
DirectX 2.0 - 2.0a
|
Placa de Vídeo
|
DirectX 3.0 - 3.0a
|
Placa de Vídeo
|
DirectX 4.0
|
Placa de Vídeo
|
DirectX 5.0
|
Placa de Vídeo
|
DirectX 5.0
|
Placa de Vídeo
|
DirectX 6.0
|
Placa de Vídeo Rage Mobility-CL
|
DirectX 7.0
|
Placa de Vídeo GeForce4 MX 420
|
DirectX 7.0a
|
Placa de Vídeo GeForce4 MX 420
|
DirectX 8.0
|
Placa de Vídeo 4 410 Go
|
DirectX 8.1
|
Placa de Vídeo Radeon 9200
|
DirectX 9.0
|
Placa de Vídeo Radeon 9500
|
DirectX 9.0a
|
Placa de Vídeo FX Go5200
|
DirectX 9.0b
|
Placa de Vídeo Mobility Radeon X600 SE
|
DirectX 9.0c
|
Placa de Vídeo Radeon X1050
|
DirectX 10
|
Placa de Vídeo Radeon 2900 Pro
|
DirectX 10.1
|
Placa de Vídeo Radeon HD 4670
|
DirectX 10.1
|
Placa de Vídeo Radeon HD 4870
|
DirectX 11
|
Placa de Vídeo Radeon R5 235
|
DirectX 11
|
Placa de Vídeo Radeon R5 220
|
DirectX 11.1
|
Placa de Vídeo Radeon R9 295X2
|
DirectX 12
|
Placa de Vídeo Radeon Pro Duo
|