# DirectX

Microsoft DirectX é uma coleção de APIs que tratam de tarefas relacionadas a multimídia, especialmente programação de jogos, para o sistema operacional Microsoft Windows, ou seja, é quem padroniza a comunicação entre software e hardware. Com a padronização de comunicação, o DirectX fornece instruções para que aplicações (jogos, programas gráficos e entre outros, que são escritos para fins de sua utilização), e o respectivo hardware, façam uso dos seus recursos. O DirectX foi inicialmente distribuido pelos criadores de jogos junto com seus produtos, mas depois foi incluído no Windows.

## Componentes

A funcionalidade do DirectX é provida na forma de interfaces COM, bem como um conjunto de interfaces de código gerenciado.
Os componentes do DirectX atualmente suportados são:
* Direct3D: API de desenhos de gráficos 3D.
* DXGI: enumera adaptadores e monitora e gerencia cadeias de troca para Direct3D 10 e posterior.
* Direct2D: API de desenhos de gráficos 2D.
* DirectWrite: API de renderização de texto.
* DirectCompute: API de computação de uso geral em unidades de processamento gráfico.
* DirectX Diagnostics (DxDiag): uma ferramenta para diagnosticar e gerar relatórios sobre componentes relacionados ao DirectX, como áudio, vídeo e drivers de entrada.
* XACT3: API de áudio de alto nível.
* XAudio2: API de áudio de baixo nível.
* DirectX Raytracing (DXR): API de traçado de raios em tempo real.
* DirectStorage: API de E/S de arquivo orientada a GPU.
* DirectML: aprendizado de máquina acelerado por GPU e API de inteligência artificial.
Os componentes do DirectX obsoletos são:
* DirectX Media: Composta por:
** DirectAnimation para animação 2D/3D da web, DirectShow para reprodução multimídia e streaming de mídia.
** DirectX Media Objects: Suporte para objetos de streaming, como codificadores, decodificadores e efeitos.
** DirectX Transform para interatividade na internet, e Direct3D Retained Mode para gráficos 3D de nível superior.
** Plugins de DirectX para processamento de sinais de áudio.
** DirectX Video Acceleration para aceleração de reprodução de vídeo.
* DirectDraw: API de desenhos de gráficos 2D.
* DirectInput: para distribuição de dispositivos de controle - teclados, mouses, joysticks, ou outros controladores de jogo.
* DirectPlay: para comunicação em rede local de computadores ou internet.
* DirectSound: para a reprodução e gravação de sons de waveform.
** DirectSound3D (DS3D): para a reprodução de sons 3D.
* DirectMusic: para reprodução de trilhas sonoras ou tocadas no DirectMusic Producer.
* DirectSetup: para a instalação de componentes de DirectX.

## Versões

A cada nova versão que surge, há novidades e melhores desempenhos para determinados jogos e programas. Por exemplo, um usuário deseja rodar um jogo que é compatível com o DirectX 9.0 ou superior, porém sua placa de vídeo (que possui uma arquitetura e instruções de como executar respectivas versões do DirectX) ainda usa o DirectX 8.0. Quando rodar o jogo, ele pedirá instruções que existem somente nas versões a partir da 9.0. Como o usuário ainda está com a versão 8.0, o hardware não reconhecerá a instrução, a API deverá emular, no hardware compatível com DirectX 8.0 a instrução do jogo compatível com DirectX 9.0, assim o resultado final não terá a qualidade total que o jogo ou programa oferece.
Para saber qual a versão instalada, vá em Iniciar → Executar (ou tecla do Windows + r, para Windows 7, Vista e XP). Depois digite "Dxdiag" (sem aspas). Em "Informações do sistema", na última linha haverá a "Versão do DirectX", onde mostra qual a versão instalada.$^[$
* DirectX 1.0: 4.02.0095
* DirectX 2.0: (2.0a) 4.03.00.1096
* DirectX 3.0: (3.0a) 4.04.0068
* DirectX 5.0: 4.05.01.1721 (lançado no Windows 98)
* DirectX 6.0: 4.06.02.0436 (lançado no Windows 98 SE)
* DirectX 7.0: 4.07.00.0700 (lançado no Windows 2000 e Windows ME)
* DirectX 8.0: 4.08.00.0400
* DirectX 8.1: 4.08.01.0811 (lançado no 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 (última versão para Windows XP SP2, Windows XP 64-bit Edition SP1 e Windows Server 2003 SP1)
* DirectX 9.0l: (L para legacy, implementação do DX9 para Windows Vista)
* DirectX 10.0: 6.00.6000.16386 (lançado no Windows Vista)
* DirectX 10.1: 6.00.6001.18000 (lançado no Service Pack 1 para Windows Vista)
* DirectX 11.0: 6.01.7600.16385 (lançado no Service Pack 2 para Windows Vista e para Windows 7)
* DirectX 11.1: 6.02.9200.16384 (lançado no Windows 8, Windows RT e Windows Server 2012, compatível com Windows 7 SP1 e Windows Server 2008 R2 SP1)
* DirectX 11.2: 6.03.9600.16384 (lançado no Windows 8.1, Windows RT 8.1 e Windows Server 2012 R2)
* DirectX 12: Apresentado com o Windows 10 e adicionado ao Xbox One e posteriormente ao Windows 7
O Windows Vista trouxe o DirectX 10 e o lançamento do Service Pack 1 trouxe o DirectX 10.1. Este novo DirectX possui diversas particularidades, quer em nível de desempenho quer em nível de gastos, destas particularidades, destaca-se a implementação de Pixel Shader 4.1.
Esta atualização possui duas vertentes: O Vista deve ser atualizado para a versão mais recente, bastando para isso instalar o SP1 (lançado no primeiro trimestre de 2008), e terá de comprar ou possuir uma placa compatível com as novas especificações deste DirectX.
A versão 11 do DirectX traz a implementação da tecnologia Ray tracing
As placas de Vídeo com suporte DirectX 11 são: NVIDIA GeForce 400 e posteriores, AMD Radeon Series HD5000 e posteriores, GDH PcControl Séries D900 D960 e posteriores.
O Directx 12 trará ganhos de performance para todas as GPUS compatíveis no que diz respeito ao uso do hardware, especialmente nas placa de vídeo da AMD e a GPU do Xbox One (que segundo os desenvolvedores será suficiente para diminuir a lacuna existente com o PlayStation 4).