Freigeben über


Einrichten der Direct3D 12-Programmierumgebung

Beschreibt die Installation, Tools und unterstützten Bibliotheken, aus denen eine produktive Direct3D 12-Entwicklungsumgebung besteht.

Entwicklungsumgebung

Die Direct3D 12-Header und -Bibliotheken sind Teil des Windows 10 SDK. Es ist kein separater Download oder eine separate Installation erforderlich, um Direct3D 12 zu verwenden.

Nachdem Sie die Windows 10 SDK-Software und Visual Studio installiert haben, ist die Einrichtung Ihrer Direct3D 12-Programmierumgebung abgeschlossen. Visual Studio 2019 wird empfohlen, da es die D3D12-Grafikdebuggingtools enthält, aber frühere Versionen von Visual Studio funktionieren für die Programmentwicklung.

Wenn Sie die Direct3D 12-API-verwenden möchten, schließen Sie D3d12.h und einen Link zu D3d12.lib ein, oder fragen Sie die Einstiegspunkte direkt in D3d12.dllab.

Die folgenden Header und Bibliotheken sind verfügbar. Der Speicherort der statischen Bibliotheken hängt von der Version (32-Bit oder 64-Bit) von Windows 10 ab, die auf Ihrem Computer ausgeführt wird.

Header- oder Bibliotheksdateiname Beschreibung Installationsspeicherort
D3d12.h Direct3D 12-API-Header %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12.lib Statische Direct3D 12-API-Stubbibliothek %WindowsSdkDir\Lib%WindowsSDKVersion%\\um\arch
D3d12.dll Dynamische Direct3D 12-API-Bibliothek %WINDIR%\System32
D3d12SDKLayers.h Direct3D 12-Debugheader %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12SDKLayers.dll Dynamische Direct3D 12-Debugbibliothek %WINDIR%\System32

Unterstützte Sprachen

C++ ist die einzige unterstützte Sprache für die Direct3D 12-Entwicklung, C# und andere .NET-Sprachen werden nicht unterstützt.

Hilfsstrukturen

Es gibt eine Reihe von Hilfsstrukturen, die insbesondere die Initialisierung einer Reihe von D3D12-Strukturen erleichtern. Diese Strukturen und einige Hilfsfunktionen befinden sich im Header D3dx12.h. Dieser Header ist Open Source und kann von einem Entwickler nach Bedarf geändert werden . Laden Sie ihn aus The D3D12 Helper Library herunter, und verweisen Sie auf Hilfsstrukturen und -funktionen für D3D12.

Speicherverwaltungsbibliothek

Eine Speicherverwaltungshilfsbibliothek steht zum Herunterladen zur Verfügung, die Sie in Ihre App integrieren können, um das Verhalten der D3D11-Speicherverwaltung genauer abzugleichen. Als D3D11-Stilverwaltungsbibliothek ist es am effektivsten bei Apps, die weiterhin eine zugesicherte Ressource Stilzuordnungsstrategie verwenden. Insbesondere sollte die Bibliothek als Schrittstein angesehen werden, der Ihnen den größten Teil des Wegs zurück zu D3D11 führt, die speicherbasierte Verwaltung bei eingeschränkten Speicherszenarien (z. B. Low-End-Speicherkarten, 4k, Ultra-Einstellungen usw.) ermöglicht. D3D12-APIs ermöglichen Techniken, mit denen Sie eine noch bessere Speichereffizienz über D3D11 erzielen können, obwohl diese Techniken schwierig und zeitaufwändig sein können, um sie zu implementieren.

Beachten Sie, dass diese Bibliothek eine laufende Arbeit ist und sich im Laufe der Zeit ändern kann. Verwenden Sie die nachstehenden Links, um auf die Bibliothek und Beispiele zuzugreifen.

Unterstützte Tools und Bibliotheken

Die folgenden Bibliotheken können alle mit Direct3D 12 verwendet werden.

Bibliothek Zweck Dokumentation
DirectX Tool Kit für DirectX 12- Eine umfangreiche Sammlung von Hilfsklassen zum Schreiben von Direct3D 12 C++-Code für UWP-Apps (Universelle Windows-Plattform), Win32-Desktopanwendungen für Windows 10 und exklusive Xbox One-Apps. DirectX12TK-Wiki-
DirectXTex- Verwenden Sie dies zum Lesen und Schreiben von DDS-Dateien und zum Ausführen verschiedener Texturinhaltsverarbeitungsvorgänge, einschließlich Größenänderung, Formatkonvertierung, Mip-Kartengenerierung, Blockkomprimierung für Direct3D-Laufzeittextressourcen und Höhenzuordnung zur Normalzuordnungskonvertierung. DirectXTex-Wiki-
DirectXMesh- Verwenden Sie dies zum Ausführen verschiedener Geometrie-Inhaltsverarbeitungsvorgänge, einschließlich des Generierens von Normal- und Tangentenframes, Der Berechnung von Dreiecksadjacency und der Optimierung des Vertexcaches. DirectXMesh-Wiki-
DirectXMath- Eine große Anzahl von Hilfsklassen und Methoden zur Unterstützung von Vektoren, Skalaren, Matrizen, Quaternionen und vielen anderen mathematischen Vorgängen. DirectXMath-Dokumentation auf MSDN-
UVAtlas Verwenden Sie dies zum Erstellen und Verpacken eines Isochart-Texturatlass. UVAtlas-Wiki-

 

Proben

Eine Liste der funktionierenden D3D12-Beispiele und deren Suche und Ausführung finden Sie unter Working Samples.

Informationen zum Hinzufügen von Code zum Aktivieren bestimmter Features finden Sie unter D3D12 Code Walk-Throughs.

Debugebene

Die Debugebene bietet umfangreiche zusätzliche Parameter- und Konsistenzüberprüfungen (z. B. Überprüfen der Shaderverknüpfung und Ressourcenbindung, Überprüfen der Parameterkonsistenz und Fehlerbeschreibungen).

Anmerkung

Aktivieren Sie für Windows 10 das optionale Feature "Grafiktools", um ein Gerät zu erstellen, das die Debugebene unterstützt. Wechseln Sie unter Windows 10 22H2 zum Bereich "Einstellungen" unter "System". Wechseln Sie in älteren Versionen von Windows 10 zum Bereich "Einstellungen" unter "Apps > Apps & Features". Wechseln Sie zu "Optionale Features" > "Feature hinzufügen" und suchen Sie dann nach "Grafiktools".

Der Für die Unterstützung der Debugebene erforderliche Header D3D12SDKLayers.h ist standardmäßig von d3d12.h enthalten.

Wenn die Debugebene Speicherverluste auflistet, gibt sie eine Liste von Objektschnittstellenzeigern zusammen mit ihren Anzeigenamen aus. Der Standardmäßige Anzeigename ist "<unbenannten>". Sie können den Anzeigenamen mithilfe der ID3D12Object::SetName--Methode festlegen. In der Regel sollten Sie diese Aufrufe aus Ihrer Produktionsversion kompilieren.

Es wird empfohlen, die Debugebene zum Debuggen Ihrer Apps zu verwenden, um sicherzustellen, dass sie fehlerfrei von Fehlern und Warnungen sind. Die Debugebene hilft Ihnen beim Schreiben von Direct3D 12-Code. Darüber hinaus kann Ihre Produktivität bei Verwendung der Debugebene erhöht werden, da Sie sofort die Ursachen von verdeckten Renderingfehlern oder sogar schwarzen Bildschirmen an ihrer Quelle sehen können. Die Debugebene stellt Warnungen für viele Probleme bereit. Zum Beispiel:

  • Vergessen Sie, eine Textur festzulegen, aber lesen Sie sie in Ihrem Pixelshader.
  • Ausgabetiefe, aber keine Tiefenschablonenzustandsgrenze aufweisen.
  • Fehler bei der Texturerstellung mit INVALIDARG.

Legen Sie den Compiler fest, D3DCOMPILE_DEBUG festlegen, um den HLSL-Compiler anweisen, Debuginformationen in das Shader-Blob einzuschließen.

#define D3DCOMPILE_DEBUG 1

Ausführliche Informationen zu allen Debugschnittstellen und -methoden finden Sie im Debug Layer Reference.

Übersicht über die Verwendung der Debugebene finden Sie unter Grundlegendes zur D3D12-Debugebene.

Schulungsvideos

Es gibt eine Reihe von Direct3D 12- und Windows 10-verwandten Videos in DirectX Advanced Learning-Videolernprogramme, einschließlich Videos zu Grafikdebuggingtools und Melden von Grafikfehlern.

Grundlegendes zu Direct3D 12-