Compartilhar via


Instalação do DirectX para desenvolvedores de jogos

Este artigo destina-se a abordar algumas das perguntas comuns sobre o runtime do DirectX e usar o DirectSetup para instalar o DirectX.

Importante

O SDK do DirectX herdado está no fim da vida útil, mas ainda está disponível para dar suporte a jogos antigos, tutoriais e projetos. Novos projetos não devem usá-lo. O uso do SDK do DirectX herdado requer o uso do DirectSetup preterido para componentes como D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 e XACT. Para obter mais detalhes sobre o estado atual do SDK do DirectX, consulte Where is the DirectX SDK?, and the blog post Not So Direct Setup.

DirectX Runtime

O runtime do DirectX consiste em componentes principais e componentes opcionais.

Os componentes principais, como Direct3D e DirectInput, são considerados parte do sistema operacional. Os componentes principais do DirectX 9.0c não foram alterados desde a Atualização de Verão de 2004 do SDK do DirectX e correspondem ao que foi lançado com o Microsoft Windows XP SP2, Windows XP Pro x64 Edition e Windows Server 2003 SP1. O Windows Vista inclui o DirectX 10, que dá suporte ao WDDM (Windows Display Driver Model) e ao Direct3D 10.x. O Windows 7 e o Windows Vista dão suporte ao DirectX 11, que dá suporte ao Direct3D 11, Direct2D, DirectWrite, ao dispositivo de renderização de software WARP10 e aos níveis de recursos 10level9. Consulte APIs gráficas no Windows para obter mais detalhes.

Os componentes opcionais são lançados em atualizações do SDK do DirectX e incluem D3DX, XACT, XAudio2, XINPUT, DirectX Gerenciado e outros desses componentes. Muitos dos componentes opcionais são atualizados regularmente para integrar os comentários dos clientes e expor novos recursos.

Número de versão do DirectX

O número de versão do DirectX, como 9.0c, refere-se apenas à versão dos componentes principais, como Direct3D, DirectInput ou DirectSound. Esse número não abrange as versões dos vários componentes opcionais que são lançados no SDK do DirectX, como D3DX, XACT, XINPUT e assim por diante.

Em geral, o número de versão do DirectX não é significativo, exceto como uma referência rápida aos principais bits de tempo de execução. Esse número não deve ser usado para marcar se o runtime do DirectX correto já estiver instalado, pois ele não leva em conta os componentes opcionais do DirectX.

Bibliotecas DirectX

No passado, os componentes opcionais do SDK do DirectX, incluindo D3DX, eram lançados como bibliotecas estáticas. No entanto, elas agora são lançadas como DLL (bibliotecas dinâmicas) devido ao aumento da demanda por melhores práticas de segurança. As DLLs permitem a manutenção de código lançado anteriormente. Se esses componentes fossem implantados como bibliotecas estáticas, não haveria como a Microsoft resolver problemas de segurança encontrados após a versão.

À medida que os recursos são adicionados ou alterados para os componentes opcionais, os nomes das DLLs correspondentes também são alterados para garantir que nenhuma regressão seja causada a jogos existentes que estão usando componentes liberados. As DLLs para cada componente vivem lado a lado e os desenvolvedores de jogos podem escolher exatamente qual versão de DLL o jogo usa vinculando-se à biblioteca de importação correspondente.

Embora garantir que as DLLs sejam instaladas em um sistema não é tão fácil quanto simplesmente vincular a bibliotecas estáticas, algumas alterações foram feitas no SDK do DirectX para resolver a dor do modelo de DLL:

  • O redistribuível do DirectX pode ser configurado para conter apenas os componentes necessários ao aplicativo para minimizar a distribuição e os tamanhos de mídia.
  • A pasta redistribuível, Program Files\DirectX SDK\Redist\, agora contém um arquivo de gabinete (.cab) para cada componente opcional possível, para que você não precise desenterrar um SDK mais antigo para encontrá-los.
  • A instalação do próprio SDK instala todos os componentes opcionais possíveis.
  • Um redistribuível DirectX que contém todos os componentes opcionais está disponível como um instalador baseado na Web e como um pacote para download; consulte o DirectX (Centro de Desenvolvedores do DirectX) para obter mais informações.

Instalação do DirectX pelo Instalador do Jogo

Veja a seguir as práticas recomendadas para adicionar a instalação do DirectX ao instalador de um jogo:

Termo Descrição
Instale os componentes redistribuíveis sempre.
O processo de instalação de um jogo deve instalar os componentes redistribuíveis do DirectX durante cada instalação sem permitir que os usuários o aceitem. Se você permitir a recusa, alguns usuários adivinharão que não precisam dele e, se realmente o fizerem, o jogo não será executado.
Deixe o instalador do DirectX marcar para componentes opcionais.
Não suponha que os componentes opcionais mais recentes já estejam instalados em um sistema, pois Windows Update e Service Packs não fornecem nenhum dos componentes opcionais do DirectX. Você deve instalar o runtime do DirectX executando dxsetup.exe diretamente ou chamando DirectSetup.
Configure silenciosamente.
Inicie a instalação no modo silencioso para que os usuários não ignorem acidentalmente a atualização do runtime do DirectX. Você pode fazer isso iniciando dxsetup.exe com o seguinte comando:
   path-to-redistributable\dxsetup.exe /silent
ou chamando DirectSetup e não mostrando nenhuma interface do usuário.
Combinar aceitações do EULA.
Se você solicitar que o usuário aceite um EULA, combine isso com a solicitação de aceitação do DirectX EULA ao instalar no modo silencioso para que a solicitação de aceitação de EULAs ocorra apenas uma vez. A solicitação deve acontecer antes de instalar qualquer coisa para que, se o usuário não aceitar, você não acabe com uma instalação parcial e com falha.
Basta executar dxsetup ou chamar DirectSetup.
Como o número de versão do DirectX não se refere a nada, exceto os componentes principais do DirectX, não marcar uma versão instalada antes de executar dxsetup.exe ou chamar DirectSetup. Além disso, não marcar a existência de um arquivo para testar se um componente opcional já está instalado, pois isso geralmente não determinará corretamente quando um componente existe, mas precisa de atualização. No entanto, o pacote de instalação do DirectX determinará isso rapidamente e executará a ação correta.

Pequenos pacotes de instalação

Você pode criar pacotes de instalação menores para o DirectX retirando o conteúdo da pasta redistribuível do DirectX até o conjunto mínimo de arquivos necessários para fazer o instalador funcionar e retendo todos os componentes adicionais que seu jogo usa.

Dependendo de suas especificações mínimas, talvez você nem precise incluir os arquivos de gabinete principais do DirectX 9.0c na pasta redistribuível da mídia de instalação. A grande maioria das instalações do Windows XP tem o Service Pack 2, que inclui os principais componentes do DirectX 9.0c, portanto, a operação de instalação do DirectX será muito rápida e não exigirá uma reinicialização. O menor pacote que pode ser criado é de cerca de 3 MB e pode ser compactado para cerca de metade desse tamanho. Um pacote como este contém uma versão da DLL D3DX e exige que o DirectX 9.0c já esteja presente.

O conjunto mínimo de arquivos necessários para criar um pacote redistribuível são os seguintes arquivos, localizados na pasta Redist do SDK do DirectX (Arquivos de Programas\DirectX SDK\Redist):

  • dxsetup.exe
  • dsetup32.dll
  • dsetup.dll
  • dxupdate.cab

Adicione a eles os arquivos de gabinete para os componentes que você deseja instalar. Se você exigir que os usuários do aplicativo já tenham o DirectX 9.0c, não será necessário incluir DirectX.cab ou dxnt.cab, que compõem a maior parte do requisito de espaço. DirectX.cab só é necessário para Windows 98 e Windows ME; dxnt.cab só é necessário para Windows 2000, Windows XP e Windows XP SP1; e dxdllreg_x86.cab só é necessário para Windows 2000, Windows XP RTM, Windows XP SP1 e Windows Server 2003 RTM. Além disso, se você não usar o DirectShow ou assumir que ele já está instalado, poderá omitir BDA.cab, BDANT.cab e BDAXP.cab.

Observação

Você pode supor que os usuários do seu aplicativo já tenham o DirectX 9.0c se ele tiver sido instalado por uma versão anterior do seu aplicativo, forçar os usuários a atualizar manualmente por meio do Web Installer ou presumir que eles tenham o Windows XP SP2 ou posterior.

Continuando com este exemplo, se você estiver usando apenas a versão de 32 bits do D3DX para abril de 2006, poderá adicionar Apr2006_d3dx9_30_x86.cab. Se você estiver usando a versão de 32 bits de agosto de 2006 de 32 bits do XINPUT, adicione Aug2006_xinput_x86.cab.

Se você tiver um aplicativo nativo de 64 bits, precisará adicionar as versões _x64. No entanto, se você tiver um aplicativo de 32 bits em execução em um sistema operacional de 64 bits, as versões de 32 bits das DLLs funcionarão.

Em seguida, você pode distribuir esse pacote de arquivos e iniciar o DirectSetup no modo silencioso ou executar dxsetup.exe no shell de comando no modo silencioso. Lembre-se de não proteger esse pacote por qualquer verificação de versão dos arquivos e verifique se os usuários não podem recusar a execução da configuração do DirectX. Qualquer um desses eventos cria um processo de instalação falível.

Implantação interna do Runtime do DirectX de depuração

Os runtimes de depuração dos componentes do DirectX são instalados quando o SDK do DirectX é instalado, mas a instalação do SDK em cada computador de teste pode ser dolorosa. Você precisa criar seu processo de instalação para copiar as DLLs de runtime de depuração de Arquivos de Programas\Microsoft DirectX SDK\Developer Runtime\architecture\ para Windows\system32\ ou para a pasta do jogo.

No entanto, é altamente recomendável que você não copie simplesmente as DLLs lançadas em tempo de execução porque é fácil esquecer de removê-las para o produto final. Em vez disso, coloque os arquivos de instalação do DirectX em uma pasta compartilhada e execute a configuração silenciosamente na pasta compartilhada.

aplicativos Ponte de Desktop

Ponte de Desktop aplicativos que usam D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 ou XACT devem baixar a estrutura Microsoft.DirectX.x86 ou Microsoft.DirectX.x64 para implantar esses componentes herdados do SDK do DirectX lado a lado. Como alternativa, você pode remover todas essas dependências ( consulte o Guia do desenvolvedor para a versão redistribuível do XAudio 2.9 e as postagens de blog Vivendo sem D3DX e XINPUT e Windows 8).