Configuração do ambiente de programação do Direct3D 12

Descreve a instalação, as ferramentas e as bibliotecas com suporte que compõem um ambiente de desenvolvimento produtivo do Direct3D 12.

Ambiente de desenvolvimento

Os cabeçalhos e bibliotecas do Direct3D 12 fazem parte do SDK do Windows 10. Não é necessário nenhum download ou instalação separada para usar o Direct3D 12.

Depois de instalar o software SDK do Windows 10 e o Visual Studio, a instalação do ambiente de programação Direct3D 12 está concluída. O Visual Studio 2019 é recomendado, pois incluirá as ferramentas de depuração de elementos gráficos D3D12, mas versões anteriores do Visual Studio funcionarão para o desenvolvimento de programas.

Para usar a API do Direct3D 12, inclua D3d12.h e vincule-se a D3d12.lib ou consulte os pontos de entrada diretamente no D3d12.dll.

Os seguintes cabeçalhos e bibliotecas estão disponíveis. O local das bibliotecas estáticas depende da versão (32 bits ou 64 bits) do Windows 10 que está sendo executada no computador.

Nome do arquivo de cabeçalho ou biblioteca Descrição Local da instalação
D3d12.h Cabeçalho da API Direct3D 12 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12.lib Biblioteca de stub de API estática do Direct3D 12 %WindowsSdkDir\Lib%WindowsSDKVersion%\\um\arch
D3d12.dll Biblioteca de API dinâmica do Direct3D 12 %WINDIR%\Sistema32
D3d12SDKLayers.h Cabeçalho de depuração do Direct3D 12 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12SDKLayers.dll Biblioteca de depuração dinâmica do Direct3D 12 %WINDIR%\Sistema32

Idiomas com suporte

C++ é a única linguagem com suporte para desenvolvimento Direct3D 12, C# e outras linguagens .NET não são suportadas.

Estruturas auxiliares

Há uma série de estruturas auxiliares que, em particular, facilitam a inicialização de várias estruturas D3D12. Essas estruturas, e algumas funções utilitárias, estão no cabeçalho D3dx12.h. Este cabeçalho é de código aberto e pode ser modificado por um desenvolvedor conforme necessário - baixe-o da Biblioteca Auxiliar D3D12 e consulte Estruturas e Funções Auxiliares para D3D12.

Biblioteca de Gerenciamento de Memória

Uma biblioteca auxiliar de gerenciamento de memória está disponível para download que você pode integrar ao seu aplicativo para corresponder mais de perto ao comportamento de gerenciamento de memória D3D11. Como uma biblioteca de gerenciamento de estilo D3D11, ela é mais eficaz com aplicativos que ainda estão usando uma estratégia de alocação de estilo de recurso comprometida. Em particular, a biblioteca deve ser vista como um trampolim que levará você a maior parte do caminho de volta ao gerenciamento de memória de desempenho D3D11 quando em cenários com restrição de memória (por exemplo, cartões de memória low-end, 4k, configurações ultra e assim por diante). As APIs D3D12 permitem técnicas que permitem obter uma eficiência de memória ainda melhor em relação ao D3D11, embora essas técnicas possam ser desafiadoras e demoradas para implementar.

Observe que essa biblioteca é um trabalho em andamento e pode mudar ao longo do tempo. Use os links abaixo para acessar a biblioteca e os exemplos.

Ferramentas e bibliotecas suportadas

As bibliotecas a seguir podem ser usadas com o Direct3D 12.

Biblioteca Finalidade Documentação
Kit de ferramentas do DirectX para DirectX 12 Uma coleção substancial de classes auxiliares para escrever código Direct3D 12 C++ para aplicativos da Plataforma Universal do Windows (UWP), aplicativos de área de trabalho Win32 para Windows 10 e aplicativos exclusivos do Xbox One. Wiki do DirectX12TK
DirectXTex Use isso para ler e gravar arquivos DDS e executar várias operações de processamento de conteúdo de textura, incluindo redimensionamento, conversão de formato, geração de mapa mip, compactação de blocos para recursos de textura de tempo de execução do Direct3D e conversão de mapa de altura para mapa normal. Wiki do DirectXTex
DirectXMesh Use isso para executar várias operações de processamento de conteúdo de geometria, incluindo a geração de quadros normais e tangentes, cálculos de adjacência de triângulo e otimização de cache de vértices. Wiki do DirectXMesh
DirectXMath Um grande número de classes auxiliares e métodos para suportar vetores, escalares, matrizes, quaterniões e muitas outras operações matemáticas. Documentação do DirectXMath no MSDN
UVAtlas Use isso para criar e empacotar um atlas de textura isográfico. Wiki de UVAtlas

 

Exemplos

Para obter uma lista de exemplos D3D12 em funcionamento e como localizá-los e executá-los, consulte Exemplos de trabalho.

Para obter instruções passo a passo sobre como adicionar código para habilitar recursos específicos, consulte D3D12 Code Walk-Throughs.

Camada de depuração

A camada de depuração fornece extensa validação adicional de parâmetros e consistência (como validar a vinculação do sombreador e a associação de recursos, validar a consistência do parâmetro e relatar descrições de erros).

Observação

Para o Windows 10, para criar um dispositivo que ofereça suporte à camada de depuração, habilite o recurso opcional "Ferramentas Gráficas". No Windows 10 22H2, vá para o painel Configurações, em Sistema. Em versões mais antigas do Windows 10, vá para o painel Configurações, em Aplicativos > e recursos do App. Vá para Recursos opcionais > Adicionar um recurso e procure por "Ferramentas gráficas".

O cabeçalho necessário para suportar a camada de depuração, D3D12SDKLayers.h, é incluído por padrão de d3d12.h.

Quando a camada de depuração lista vazamentos de memória, ela gera uma lista de ponteiros de interface de objeto junto com seus nomes amigáveis. O nome amigável padrão é "<unnamed>". Você pode definir o nome amigável usando o método ID3D12Object::SetName . Normalmente, você deve compilar essas chamadas a partir de sua versão de produção.

Recomendamos que você use a camada de depuração para depurar seus aplicativos para garantir que eles estejam limpos de erros e avisos. A camada de depuração ajuda você a escrever código Direct3D 12. Além disso, sua produtividade pode aumentar quando você usa a camada de depuração, pois você pode ver imediatamente as causas de erros de renderização obscuros ou até mesmo telas pretas em sua origem. A camada de depuração fornece avisos para muitos problemas. Por exemplo:

  • Esqueceu de definir uma textura, mas leu a partir dela em seu sombreador de pixel.
  • Profundidade de saída, mas não têm limite de estado de estêncil de profundidade.
  • A criação de textura falhou com INVALIDARG.

Defina o compilador define D3DCOMPILE_DEBUG para dizer ao compilador HLSL para incluir informações de depuração no blob do sombreador.

#define D3DCOMPILE_DEBUG 1

Para obter detalhes de todas as interfaces e métodos de depuração, consulte a Referência da camada de depuração.

Para obter informações gerais sobre como usar a camada de depuração, consulte Compreendendo a camada de depuração D3D12.

Vídeos educativos

Há vários vídeos relacionados ao Direct3D 12 e ao Windows 10 em tutoriais em vídeo de aprendizado avançado do DirectX, incluindo vídeos sobre ferramentas de depuração de gráficos e relatando bugs gráficos.

Noções básicas sobre o Direct3D 12