Configurazione dell'ambiente di programmazione Direct3D 12

Descrive l'installazione, gli strumenti e le librerie supportate che costituiscono un ambiente di sviluppo Direct3D 12 produttivo.

Ambiente di sviluppo

Le intestazioni e le librerie Direct3D 12 fanno parte di Windows 10 SDK. Non è necessario scaricare o installare separati per usare Direct3D 12.There is no separate download or installation required to use Direct3D 12.

Dopo aver installato il software Windows 10 SDK e Visual Studio, la configurazione dell'ambiente di programmazione Direct3D 12 è stata completata. È consigliabile usare Visual Studio 2019, perché includerà gli strumenti di debug della grafica D3D12, ma le versioni precedenti di Visual Studio funzioneranno per lo sviluppo di programmi.

Per usare l'API Direct3D 12, includere D3d12.h e collegarsi a D3d12.lib oppure eseguire una query sui punti di ingresso direttamente in D3d12.dll.

Sono disponibili le intestazioni e le librerie seguenti. Il percorso delle librerie statiche dipende dalla versione (a 32 bit o 64 bit) di Windows 10 in esecuzione nel computer.

Nome file di intestazione o libreria Descrizione Posizione di installazione
D3d12.h Intestazione API Direct3D 12 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12.lib Libreria stub statica dell'API Direct3D 12 %WindowsSdkDir\Lib%WindowsSDKVersion%\\um\arch
D3d12.dll Libreria API Dynamic Direct3D 12 %WINDIR%\System32
D3d12SDKLayers.h Intestazione di debug Direct3D 12 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12SDKLayers.dll Libreria di debug Direct3D 12 dinamica %WINDIR%\System32

Lingue supportate

C++ è l'unico linguaggio supportato per lo sviluppo Direct3D 12, C# e altri linguaggi .NET non sono supportati.

Strutture helper

Esistono diverse strutture helper che, in particolare, semplificano l'inizializzazione di una serie di strutture D3D12. Queste strutture e alcune funzioni di utilità si trovano nell'intestazione D3dx12.h. Questa intestazione è open source e può essere modificata da uno sviluppatore in base alle esigenze: scaricarla dalla libreria helper D3D12 e fare riferimento a Strutture e funzioni helper per D3D12.

Libreria di gestione della memoria

Una libreria helper di gestione della memoria è disponibile per il download che è possibile integrare nell'app per trovare una corrispondenza più stretta con il comportamento di gestione della memoria D3D11. Come libreria di gestione dello stile D3D11, è più efficace con le app che usano ancora una strategia di allocazione dello stile delle risorse di cui è stato eseguito il commit. In particolare, la libreria dovrebbe essere vista come una pietra di passaggio che consente di tornare la maggior parte della strada alla gestione della memoria D3D11 con prestazioni elevate quando in scenari con vincoli di memoria (ad esempio, schede di memoria di fascia bassa, 4k, impostazioni ultra e così via). Le API D3D12 consentono tecniche che consentono di ottenere un'efficienza di memoria ancora migliore rispetto a D3D11, anche se queste tecniche possono essere complesse e dispendiose in termini di tempo da implementare.

Si noti che questa libreria è un lavoro in corso e può cambiare nel tempo. Usare i collegamenti seguenti per accedere alla libreria ed esempi.

Strumenti e librerie supportati

Tutte le librerie seguenti possono essere usate con Direct3D 12.

Libreria Scopo Documentazione
DirectX Tool Kit per DirectX 12 Raccolta sostanziale di classi helper per la scrittura di codice Direct3D 12 C++ per app piattaforma UWP (Universal Windows Platform) (UWP), applicazioni desktop Win32 per Windows 10 e app esclusive di Xbox One. Wiki di DirectX12TK
DirectXTex Usarlo per leggere e scrivere file DDS ed eseguire varie operazioni di elaborazione del contenuto delle trame, tra cui il ridimensionamento, la conversione del formato, la generazione di mappe mip, la compressione a blocchi per le risorse delle trame di runtime Direct3D e la mappa dell'altezza alla conversione normale della mappa. Wiki di DirectXTex
DirectXMesh Usare questa opzione per eseguire varie operazioni di elaborazione del contenuto geometry, tra cui la generazione di normali e frame tangenti, calcoli di adiacenza triangolo e ottimizzazione della cache dei vertici. Wiki di DirectXMesh
DirectXMath Un numero elevato di classi e metodi helper per supportare vettori, scalari, matrici, quaternioni e molte altre operazioni matematiche. Documentazione di DirectXMath su MSDN
UVAtlas Usare questa opzione per creare e creare un atlas di trame isochart. Wiki di UVAtlas

 

Esempi

Per un elenco di esempi D3D12 funzionanti e come individuarli ed eseguirli, vedere Esempi di lavoro.

Per le procedure dettagliate su come aggiungere codice per abilitare funzionalità specifiche, vedere Procedure dettagliate sul codice D3D12.

Livello di debug

Il livello di debug offre un'ampia convalida aggiuntiva di parametri e coerenza, ad esempio la convalida del collegamento dello shader e l'associazione di risorse, la convalida della coerenza dei parametri e la segnalazione delle descrizioni degli errori.

Nota

Per Windows 10, per creare un dispositivo che supporti il livello di debug, abilitare la funzionalità facoltativa "Strumenti grafici". In Windows 10 22H2 passare al pannello Impostazioni, in Sistema. Nelle versioni precedenti di Windows 10 passare al pannello Impostazioni, in App > e funzionalità. Passare a Funzionalità > facoltative Aggiungere una funzionalità e quindi cercare "Strumenti grafici".

L'intestazione necessaria per supportare il livello di debug D3D12SDKLayers.h è incluso per impostazione predefinita da d3d12.h.

Quando il livello di debug elenca le perdite di memoria, restituisce un elenco di puntatori all'interfaccia oggetto insieme ai relativi nomi descrittivi. Il nome descrittivo predefinito è "<senza nome>". È possibile impostare il nome descrittivo usando il metodo ID3D12Object::SetName. In genere, è consigliabile compilare queste chiamate dalla versione di produzione.

È consigliabile usare il livello di debug per eseguire il debug delle app per assicurarsi che siano puliti di errori e avvisi. Il livello di debug consente di scrivere codice Direct3D 12. Inoltre, la produttività può aumentare quando si usa il livello di debug perché è possibile visualizzare immediatamente le cause di errori di rendering oscura o persino schermate nere nella loro origine. Il livello di debug fornisce avvisi per molti problemi. Ad esempio:

  • Si è dimenticato di impostare una trama, ma leggerla nel pixel shader.
  • Profondità di output ma senza stato depth-stencil.
  • Creazione della trama non riuscita con INVALIDARG.

Impostare il compilatore definire D3DCOMPILE_DEBUG per indicare al compilatore HLSL di includere le informazioni di debug nel BLOB dello shader.

#define D3DCOMPILE_DEBUG 1

Per informazioni dettagliate su tutte le interfacce e i metodi di debug, vedere Riferimento al livello di debug.

Per informazioni generali sull'uso del livello di debug, vedere Informazioni sul livello di debug D3D12.

Video didattici

Sono disponibili diversi video correlati a Direct3D 12 e Windows 10 in esercitazioni video di apprendimento avanzato DirectX, tra cui video sugli strumenti di debug della grafica e segnalazione di bug grafici.

Informazioni su Direct3D 12