DirectX

DirectX

Em formação
Desenvolvido por Microsoft
Última versão 12 (19 de maio de 2019)
Sistema operacional Microsoft Windows
Modelo Interface de programação
Licença EULA
Documentação docs.microsoft.com/windows/win32/directx

Microsoft DirectX é um conjunto de bibliotecas destinadas à programação de aplicações multimídia , mais particularmente jogos ou programas envolvendo vídeo , em plataformas Microsoft ( Xbox , sistemas operacionais Windows ).

As diferentes bibliotecas

Originalmente, o nome de cada uma dessas bibliotecas começava com Direct, por exemplo: Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound e assim por diante. DirectX é o nome genérico que se refere a todas essas tecnologias. Com o tempo, essa convenção de nomenclatura caiu em desuso, o X assumindo o lugar das tecnologias chamadas Xact, Xinput e que se juntaram à grande família de tecnologias DirectX. Então, quando a Microsoft embarcou no desenvolvimento de um console fazendo uso intensivo dessas tecnologias, o X era predominante, o que pode ter levado ao nome de Xbox (e posteriormente Xbox 360 , Xbox One e depois Xbox Series X e S ).

Direct3D (a biblioteca para 3D em tempo real) é amplamente utilizada no desenvolvimento de jogos para a plataforma Microsoft Windows , para Xbox e Xbox 360 . O Direct3D também é usado para outros tipos de aplicativos que contam com gráficos 3D de alta qualidade para visualizar dados complexos, por exemplo, no setor CAD / CAM , embora seu concorrente OpenGL esteja mais bem estabelecido neste campo, porque existe em muitas outras plataformas. Sendo o Direct3D talvez uma das tecnologias DirectX mais reconhecidas, não é incomum ver o nome DirectX usado em vez de Direct3D.

A multidão de componentes DirectX vem em duas formas. Um destina-se apenas a executar aplicativos desenvolvidos com essas tecnologias ( componentes de tempo de execução ), o outro é um kit de desenvolvimento para desenvolvedores. Inicialmente os componentes destinados à execução das aplicações foram redistribuídos com os jogos que os utilizavam, nas versões mais recentes também se encontram pré-instalados com Windows. O SDK está disponível para download gratuito no site de desenvolvimento da Microsoft (MSDN) . A parte do tempo de execução é proprietária e as fontes não são acessíveis. As fontes dos exemplos SDK estão disponíveis com este.

As versões 9Ex e 10 do Direct3D foram usadas pelo Windows Vista . Essas duas versões fizeram uso de recursos específicos para o novo modelo de driver de vídeo do Windows que apareceu com o Windows Vista. A nova infraestrutura gráfica do Windows oferece suporte à virtualização do hardware gráfico em relação a vários aplicativos e serviços, por exemplo, o Desktop Window Manager (o gerenciador de desktop do Vista quando o Aero é ativado). Anteriormente, com o Windows XP , os aplicativos tinham acesso exclusivo à placa gráfica e podiam consumir seus recursos.

No PC, o DirectX é atualmente a versão 12 no Windows 10 , versão 11 para Windows 7 , para Windows Vista e Windows Server 2008 e 9.0c para todas as versões anteriores do Windows .

Componentes

Os componentes que compõem o DirectX são:

Histórico

Até DirectX 9

Em 1994 , a Microsoft estava prestes a lançar seu sistema operacional, o Windows 95 . Um dos fatores determinantes para o sucesso de qualquer sistema operacional (SO) continua sendo a variedade de softwares que ele permite executar. Três funcionários da Microsoft - Craig Eisler, Alex St. John e Eric Engstrom - estavam bastante preocupados que vários desenvolvedores pareciam pensar que o sistema operacional anterior da Microsoft, o MS-DOS , era uma plataforma melhor para jogos, o que poderia significar que menos jogos seriam ser desenvolvido para Windows 95 com o impacto negativo no sucesso desse sistema operacional que isso pode implicar.

O MS-DOS permitiu o acesso direto à placa de vídeo, teclado, mouse, placas de som e outras partes do sistema, ao contrário do Windows 95, que introduziu noções de espaço de endereço específico para cada processo. A Microsoft, portanto, teve que fornecer aos desenvolvedores o que eles queriam; além disso, era necessário fornecê-lo rapidamente, pois faltavam apenas alguns meses para o lançamento do novo sistema operacional. Eisler, St. John e Engstrom começaram a trabalhar em uma solução para esse problema, que chamaram de DirectX.

A primeira versão do DirectX foi lançada ao público em Setembro de 1995sob o nome de Windows Games SDK. Este foi o substituto da DCI para o Win32 e a API WinG disponível para o Windows 3.1 . Uma equipe de desenvolvimento da ATI Technologies chamou a atenção da Microsoft para uma série de tecnologias gráficas específicas para o mundo dos jogos. O desenvolvimento do DirectX foi liderado pela equipe de Eisler (desenvolvedor chefe), St. John e Engstrom (gerenciamento de projeto). Resumindo, permitiu que todas as versões do Windows desde o Windows 95 se beneficiassem de poderosos recursos de multimídia. Eisler escreveu em seu blog sobre o frenesi com que as versões 1 a 5 do DirectX foram feitas.

Antes da existência do DirectX, a Microsoft já incluía suporte para OpenGL no Windows NT . Naquela época, o OpenGL exigia hardware de última geração que permanecia reservado para usuários com recursos financeiros significativos como no mundo da indústria e, mais geralmente, usuários de sistemas CAD . O Direct3D (apresentado por Eisler, Engstrom e St. John como uma alternativa ao OpenGL da SGI ) foi planejado para ser uma tecnologia complementar mais leve e especializada para jogos. Com o poder das placas gráficas e dos computadores evoluindo rapidamente, o OpenGL se tornou um padrão de fato e uma tecnologia acessível a todos. Naquela época, o conflito pode ter ocorrido entre os apoiadores de cada uma das duas APIs, a iniciativa da Microsoft sendo vista como um desejo de marginalizar o uso de OpenGL (veja Fahrenheit ou Direct3D vs. OpenGL). Em qualquer caso, OpenGL às vezes é usado em conjunto com certas APIs DirectX: na verdade, OpenGL é a contraparte do Direct3D e não inclui necessariamente funcionalidades que permitem gerenciar entradas de teclado ou mouse ou som. Mesmo que hoje, bibliotecas como o SDL também atendam a essas necessidades e sejam amplamente utilizadas.

Em sua versão de console, o DirectX foi usado como espinha dorsal das APIs oferecidas para desenvolvimento no Xbox e Xbox 360 . A API foi desenvolvida em conjunto pela Microsoft e Nvidia , que forneceu o hardware gráfico presente no Xbox original. A API disponível para esta versão do Xbox era mais ou menos equivalente ao DirectX 8.1 , era chamada de DirectXbox, que foi abreviado para Xbox para obter o nome comercial.

Em 2002 , a Microsoft lançou o DirectX 9 que tinha suporte para shaders mais longos e a versão 2.0 de vertex shaders. Desde então, a Microsoft continuou a desenvolver DirectX 9 adicionando, por exemplo, suporte para o modelo de sombreador 3.0 com a versão DirectX 9.0c , entregue emAgosto de 2004.

Em Abril de 2005, O DirectShow foi movido do DirectX SDK para o Microsoft Platform SDK. No entanto, o DirectX ainda é necessário para compilar os exemplos do DirectShow.

DirectX 10

DirectX 10 é uma atualização importante para a API DirectX. Disponível apenas no Windows Vista , as versões anteriores do Windows não podem executar aplicativos que dependem exclusivamente desta versão da API. As alterações introduzidas pelo DirectX 10 são profundas, mas apenas a parte do Direct3D é realmente afetada por elas. Muitas partes da API DirectX são consideradas obsoletas na versão mais recente do SDK e não estão mais presentes por motivos de compatibilidade: DirectInput é substituído em favor de XInput, DirectSound em favor de XACT e Xaudio2 e perde seu acesso direto ao hardware no Windows Vista. Na verdade, a nova pilha de áudio do Vista apresenta uma nova API chamada WASAPI na qual as funcionalidades do DirectSound foram redirecionadas. A biblioteca DirectPlay DPLAY.dll também desapareceu e foi substituída por uma biblioteca chamada dplayx.dll.

Por motivos de compatibilidade, várias versões do Direct3D estão instaladas no Windows Vista:
Direct3D 9 oferece as mesmas funcionalidades que a versão do Direct3D 9 disponível para Windows XP . Esta será a única versão disponível, desde que um driver do Windows Display Driver Model não tenha sido instalado com o Vista, por exemplo, logo após uma atualização quando apenas um driver gráfico do XP (XPDM) estiver presente.

Direct3D 9Ex (também conhecido como 9.0L ou 9.L, o L se referindo a Longhorn, nome de código do Windows Vista usado antes de seu lançamento): Esta versão permite que você se beneficie de certos recursos introduzidos pelo uso dos drivers WDDM , embora agora seja compatível com aplicativos escritos para Direct3D 9 . A interface do Windows Aero é baseada no D3D 9Ex e usa alguns dos recursos não presentes no Direct3D 9 , como a capacidade de compartilhar superfícies DirectX entre vários processos.

Direct3D 10  : Destina-se a fornecer o acesso mais direto e total às placas gráficas modernas por meio do novo modelo de driver WDDM. Esta versão contém um grande número de novos recursos, como a capacidade de usar a linguagem HLSL em sua versão Shader Model 4 .

Direct3D 10.1 é uma pequena atualização do Direct3D 10 que é distribuída e requer o Windows Vista Service Pack 1 . Esta versão adiciona alguns recursos adicionais para dar aos desenvolvedores mais controle sobre a qualidade da imagem resultante. Esta versão tem seus próprios requisitos e requer suporte do Shader Model 4.1 para operações de ponto flutuante de 32 bits.

O DirectX 10.1 continua fazendo uso total das placas compatíveis com DirectX 10 , mas para se beneficiar de todos os novos recursos, você precisa de uma placa adequada.

DirectX 11

A Microsoft revelou o DirectX 11 no 'Gamefest 08' em Seattle, com recursos planejados incluindo suporte a GPGPU (DirectCompute), Direct3D11 com tesselação, bem como multi-threading aprimorado, para ajudar os desenvolvedores de videogame a obter software multi-core. O Direct3D 11 é executado no Windows Vista e no Windows 7. Ele também funciona nas versões a seguir. Os elementos das novas APIs, como 'manipulação de recursos multithread', podem ser suportados pelo hardware Direct3D 9/10 / 10.1. O mosaico de hardware, bem como o 'Shader Model 5.0' requer Direct3D 11. Desde então, a Microsoft atualizou Direct3D 11. Direct3D 11 é um superconjunto do Direct3D 10.1 - todos os recursos da versão 10.1 estão presentes, os novos recursos não estão disponíveis apenas quando necessário. Isso para melhor compatibilidade.

O DirectX 11.1 está presente no Windows 8 . Ele oferece suporte a WDDM 1.2 para melhor desempenho, oferece integração aprimorada de Direct2D, Direct3D, DirectCompute e inclui DirectXMath, XAudio2, bem como bibliotecas XNA da estrutura XInput. Também inclui suporte 3D estereoscópico.

DirectX 11.2 é um exclusivo do Windows 8.1 . Esta evolução da API traz suporte para WDDM 1.3, um compartilhamento dinâmico de recursos entre as diferentes memórias do computador (chamadas de recursos Tiled ), bem como outras pequenas evoluções.

O DirectX 11.3 é uma nova evolução da API que terá certas funções do DirectX 12, especialmente no nível do Direct3D.

DirectX 12

a 6 de março de 2014, A Microsoft formalizou o anúncio do DirectX 12 na Game Developers Conference de 17 a21 de marçoem San Francisco . Esta versão do DirectX está disponível no Windows 10 , Xbox One e Windows Phone e oferece acesso de nível inferior a recursos de circuitos gráficos para oferecer melhor desempenho e menor consumo de energia. Os meios utilizados são para facilitar a distribuição dos recursos utilizados, para melhor explorar os multiprocessos e as placas multi-gráficas.


Na quarta-feira, 20 de maio de 2020, a Microsoft anunciou o porte do DirectX 12 para o sistema operacional Linux como parte de seu desejo de aproximar o Windows 10 do Linux. Cujo código-fonte é Open Source e gratuito para consulta.

Portas fora da Microsoft

Embora DirectX seja uma API projetada para o sistema operacional Windows , existem drivers e bibliotecas de software que fornecem parte de sua API em outros sistemas operacionais, como:

Versões

Versão Data de lançamento
Maior Menor Código de versão
1 1.0 4.02.0095 30 de setembro de 1995
2 2.0 4.03.00.1096 1996
2.0a 5 de junho de 1996
3 3,0 4.04.00.0068 15 de setembro de 1996
4.04.00.0069 1996
3.0a 4.04.00.0070 Dezembro de 1996
3,0b
4 4,0 Nunca sai
5 5.0 4.05.00.0155 (RC55) 16 de julho de 1997
5,2 4.05.01.1600 (RC00) 5 de maio de 1998
4.05.01.1998 (RC0) 25 de junho de 1998
6 6,0 4.06.00.0318 (RC3) 7 de agosto de 1998
6,1 4.06.02.0436 (RC0) 3 de fevereiro de 1999
6.1a 4.06.03.0518 (RC0) 5 de maio de 1999
7 7,0 4.07.00.0700  22 de setembro de 1999
17 de fevereiro de 2000
7.0a 4.07.00.0716 8 de março de 2000
2000
7,1 4.07.01.3000 (RC1) 14 de setembro de 2000
8 8,0 4.08.00.0400 (RC10) 12 de novembro de 2000
8.0a 4.08.00.0400 (RC14) 5 de fevereiro de 2001
8,1 4.08.01.0810 25 de outubro de 2001
4.08.01.0881 (RC7) 8 de novembro de 2001
8.1a 4.08.01.0901 (RC?) 2002
8.1b 4.08.01.0901 (RC7) 25 de junho de 2002
8,2 4.08.02.0134 (RC0) 2002
9 9,0 4.09.00.0900 (RC4) 19 de dezembro de 2002
9.0a 4.09.00.0901 (RC6) 26 de março de 2003
9,0b 4.09.00.0902 (RC2) 13 de agosto de 2003
9.0c 4.09.00.0903  
4.09.00.0904  4 de agosto de 2004
6 de agosto de 2004
4.09.00.0904 (RC0) Agosto de 2005
4.09.00.0905 (RC0) Novembro de 2008
4.09.00.0906 (RC0) Março de 2009
4.09.00.090? (RC0) junho de 2010
10 10,0 6.00.6000.16386 30 de novembro de 2006
10,1 6.00.6001.18000 18 de março de 2008
11 11 6.01.7600.16385 22 de julho de 2009
11 6.01.7601.17514 6 de fevereiro de 2011
11,1 6.02.9200.16384 1 st de Agosto de 2012
11,2 6.03.9600.16384 17 de outubro de 2013
12 12 10.00.10586.0000 29 de julho de 2015
10.00.14393.0000 24 de agosto de 2016
10.00.15063.0000 5 de abril de 2017
10.00.17134.0001 10 de abril de 2018
10.00.17763.0001 2 de outubro de 2018
10.00.18362.0387 novembro de 2019

Compatibilidade

APIs como Direct3D e DirectSound interagem diretamente com o hardware por meio de drivers. Os fabricantes de hardware devem escrever esses drivers para uma versão específica do DirectX 'Device Driver Interface' (ou DDI). Versões mais antigas do DirectX incluíam várias atualizações de driver do DirectX, mas essa prática foi abandonada em favor do Windows Update, que permite que os usuários baixem apenas drivers específicos para seu hardware. Versões anteriores ao DirectX 10 foram projetadas para serem compatíveis com os drivers mais antigos, era possível usar versões mais recentes do DirectX com drivers escritos para oferecer suporte a uma versão mais antiga do DDI. Por exemplo, um jogo baseado em Direct3D 9 poderia rodar em uma máquina equipada com uma placa com apenas um driver desenvolvido na época do DirectX 6 . Por outro lado com DirectX 10 no Vista, levando em consideração a extensão das mudanças e o fato de que certas funcionalidades expostas pela API só estão disponíveis graças ao novo modelo de driver, é impossível usar um aplicativo desenvolvido para esta versão sem driver DirectX correspondente ao novo modelo de driver WDDM. Várias versões do DirectX vêm pré-instaladas com muitas versões do Windows para oferecer suporte a aplicativos escritos com versões mais antigas desta API, desde que não tenham sido reescritos para a versão mais recente e continuem a ser usados.

.Net Framework

Em 2002, a Microsoft disponibilizou aos desenvolvedores uma versão do DirectX SDK trazendo assemblies .Net permitindo o uso de DirectX a partir de código gerenciado, seja em C ++ gerenciado, C # ou qualquer outra linguagem suportada pelo .Net Framework. Esses assemblies foram agrupados sob o nome "Managed DirectX" (ou MDX), e permitiram obter uma performance que não necessariamente deveria se envergonhar da comparação com o que era possível obter em C ++ nativo. Emdezembro de 2005, Fevereiro de 2006, Abril de 2006 e agosto de 2006, A Microsoft disponibilizou atualizações sucessivas desta tecnologia aos desenvolvedores para obter a versão 2.0 que nunca existiu, exceto na forma de uma versão beta que expirou em5 de outubro de 2006.

Durante o GDC de 2006, a Microsoft apresentou o XNA GSE Framework, destinado a ser a nova biblioteca que permite aos desenvolvedores que desejam fazer jogos usando uma linguagem .Net para acessar as funcionalidades do DirectX. Este Framework também visa facilitar seu trabalho agrupando funcionalidades que antes poderiam ser encontradas espalhadas em diferentes montagens . Este Framework também suporta a execução de aplicativos produzidos no Xbox 360 . A versão RTM foi entregue em11 de dezembro de 2006, como um pacote para download gratuito. Ao contrário do DirectX ou DirectX gerenciado, os componentes do XNA GSE Framework ou as APIs do Xbox 360 (XInput, XACT,  etc. ) não são pré-instalados com nenhuma versão do Windows, portanto, é recomendado instalá-los ao mesmo tempo que qualquer jogo usando.

No início de 2013, a Microsoft anunciou o fim do desenvolvimento do XNA e a retirada do programa de certificação Most Valuable Professionals (MVP) em 1 r abr 2014. A comunidade de código aberto então assume com frameworks como MonoGame (sendo uma implementação de código aberto de XNA) e APIs como SharpDX fazendo chamadas para código DirectX nativo (como MDX fez).

64 bits e 32 bits

O sistema DirectX é compatível com todos os sistemas operacionais da Microsoft, 32 bits (x86) e 64 bits (x64).

Alternativas

Existem várias bibliotecas que geralmente cobrem algumas das funcionalidades do DirectX. O uso de uma combinação desses pode atingir o mesmo conjunto de recursos do DirectX, podemos mencionar SDL , Allegro , OpenMAX , OpenML , OpenGL , OpenAL , Vulkan , FMOD ,  etc. Essas bibliotecas podem ter a vantagem de possibilitar o desenvolvimento de aplicativos portáteis em sistemas operacionais diferentes do Windows. Essas bibliotecas são principalmente de projetos de código aberto .

Outros projetos, como parte do Wine , visam fornecer uma implementação alternativa do mesmo conjunto de recursos.

Notas

  1. "  DirectPlay  " , em docs.microsoft.com ,11 de junho de 2009(acessado em 17 de janeiro de 2020 )
  2. (em) "  Portal - XNA Xbox LIVE Indie Games  ' , Microsoft
  3. (em) "  O que vem por aí para DirectX? Uma visão geral do DirectX 11 - Uma visão geral do DirectX 11  » , Elite Bastards,1 st setembro 2008(acessado em 4 de setembro de 2008 )
  4. (em) "  DirectX 11: Uma olhada no que está por vir  " , bit-tech.net,17 de setembro de 2008
  5. Erro de modelo de data de lançamento do Windows 7 e D3D 11 {{Link do arquivo}}  : insira um parâmetro "   "|titre=
  6. Gamefest 2008 e o anúncio DirectX 11
  7. http://www.hardware.fr/news/13601/directx-12-officialise.html
  8. Fabien Pellegrini, "  DirectX 12: as promessas, os primeiros testes  " , em clubic.com ,13 de abril de 2015(acessado em 2 de outubro de 2020 ) .
  9. Por Romain Pomian-Bonnemaison e 20/05/2020 , “  DirectX 12: A Microsoft irá portar sua tecnologia gráfica para o Linux!  » , No PhonAndroid ,20 de maio de 2020(acessado em 2 de junho de 2020 )
  10. (in) "  microsoft / WSL2-Linux Kernel  " no GitHub (acessado em 2 de junho de 2020 )
  11. (em) "  XNA não evoluirá  "

links externos