Einrichtung der Direct3D 12-Programmierungsumgebung

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

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 auch frühere Versionen von Visual Studio funktionieren für die Programmentwicklung.

Um die Direct3D 12-API zu verwenden, schließen Sie D3d12.h und einen Link zu D3d12.lib ein, oder fragen Sie die Einstiegspunkte direkt in D3d12.dll ab.

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

Header- oder Bibliotheksdateiname Beschreibung Installationsverzeichnis
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 Hilfsprogrammfunktionen befinden sich im Header D3dx12.h. Dieser Header ist Open Source und kann von Entwicklern nach Bedarf geändert werden. Laden Sie ihn aus der D3D12-Hilfsbibliothek herunter, und verweisen Sie auf Hilfsstrukturen und -funktionen für D3D12.

Speicherverwaltungsbibliothek

Eine Speicherverwaltungshilfsbibliothek steht zum Herunterladen zur Verfügung. Diese können Sie in Ihre App integrieren, um das Verhalten der D3D11-Speicherverwaltung genauer abzugleichen. Als eine D3D11-Stilverwaltungsbibliothek lässt sich sich am effektivsten mit Apps nutzen, die weiterhin eine Strategie für zugesicherte Ressourcenstilzuordnung verwenden. Insbesondere sollte die Bibliothek als ein Schrittstein angesehen werden, der Ihnen den größten Teil des Wegs zur D3D11-leistungsfähigen Speicherverwaltung ermöglicht, wenn sie in Szenarien mit eingeschränktem Arbeitsspeicher (z. B. Low-End-Speicher-Karten, 4k, Ultra-Einstellungen usw.) verwendet wird. D3D12-APIs ermöglichen Techniken, mit denen Sie eine noch bessere Speichereffizienz über D3D11 erzielen können, obwohl die Implementierung dieser Techniken schwierig und zeitaufwändig sein kann.

Beachten Sie, dass diese Bibliothek nicht final ist und im Laufe der Zeit verändert werden kann. Greifen Sie über die nachstehenden Links auf die Bibliothek und die Beispiele zu.

Unterstützte Tools und Bibliotheken

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

Bibliothek Zweck Dokumentation
DirectX-Toolkit für DirectX 12 Eine umfangreiche Sammlung von Hilfsklassen zum Schreiben von Direct3D 12 C++-Code für Universal Windows Platform-(UWP-)Apps, 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 der Generierung von Normal- und Tangentenframes, der Berechnung von Dreiecksadjazenz und der Optimierung des Vertex-Cache. DirectXMesh-Wiki
DirectXMath Eine große Anzahl von Hilfsklassen und Methoden zur Unterstützung von Vektoren, Skalaren, Matrizen, Quaternions und vielen anderen mathematischen Vorgängen. DirectXMath-Dokumentation auf MSDN
UVAtlas Verwenden Sie diese Option, um einen ISO-Diagrammtexturatlas zu erstellen und zu packen. UVAtlas-Wiki

 

Beispiele

Eine Liste der funktionierenden D3D12-Beispiele und wie man sie findet und ausführt, finden Sie unter Arbeitsbeispiele.

Ausführliche Informationen zum Hinzufügen von Code für die Aktivierung bestimmter Features finden Sie unter Exemplarische D3D12 Code-Vorgehensweisen.

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).

Hinweis

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 > & 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 Standardanzeigename lautet „<unbenannt>“. Sie können den Anzeigenamen mithilfe der ID3D12Object::SetName-Methode-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 frei von Fehlern und Warnungen sind. Die Debugebene unterstützt Sie 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. Beispiel:

  • Sie haben vergessen, eine Textur festzulegen, sie wird jedoch in Ihrem Pixelshader ausgelesen.
  • Ausgabetiefe, aber es wird keine Tiefenschablonenzustandsgrenze ausgewiesen.
  • Fehler bei der Texturerstellung mit INVALIDARG.

Legen Sie den Compiler D3DCOMPILE_DEBUG fest, 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 in der Referenz zur Debugebene.

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

Schulungsvideos

Es gibt eine Reihe von Videos im Zusammenhang mit Direct3D 12- und Windows 10 in DirectX – Forgeschrittene Lernvideoanleitungen, einschließlich Videos zu Grafikdebuggingtools und Melden von Grafikfehlern.

Grundlegendes zu Direct3D 12