Einrichtung der Direct3D 12 Programmierungsumgebung

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

Entwicklungsumgebung

Die Direct3D 12-Header und -Bibliotheken sind Teil des Windows 10 SDK. Für die Verwendung von Direct3D 12 ist kein separater Download oder keine separate Installation erforderlich.

Nachdem Sie die Windows 10 SDK-Software installiert und Visual Studio 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 für die Programmentwicklung funktionieren.

Um die Direct3D 12-APIzu verwenden, schließen Sie D3d12.h ein, und verknüpfen Sie D3d12.lib, 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 Version (32-Bit oder 64-Bit) von Windows 10 ab, 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 das Initialisieren 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 von der D3D12-Hilfsbibliothek herunter, und lesen Sie Helper Structures and Functions for D3D12 (Hilfsstrukturen und Funktionen für D3D12).

Speicherverwaltungsbibliothek

Eine Hilfsbibliothek für die Speicherverwaltung steht zum Download zur Verfügung, die Sie in Ihre App integrieren können, um das D3D11-Speicherverwaltungsverhalten besser zu berücksichtigen. Als Verwaltungsbibliothek im D3D11-Stil ist sie am effektivsten bei Apps, die weiterhin eine Strategie für die Zuordnung von Ressourcenstilen verwenden, für die ein Commit ausgeführt wurde. Insbesondere sollte die Bibliothek als Schrittweise betrachtet werden, mit dem Sie in Szenarien mit eingeschränktem Arbeitsspeicher (z. B. Low-End-Grafikkarten, 4K, Ultra-Einstellungen usw.) den größten Teil zurück zur leistungsorientierten D3D11-Speicherverwaltung erhalten. D3D12-APIs ermöglichen Techniken, mit denen Sie eine noch bessere Speichereffizienz gegenüber D3D11 erzielen können, obwohl diese Techniken schwierig und zeitaufwändig sein können.

Beachten Sie, dass diese Bibliothek gerade ausgeführt wird und sich im Laufe der Zeit ändern kann. Verwenden Sie die unten angegebenen 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 (Universal Windows Platform), Win32-Desktopanwendungen für Windows 10 und Xbox One exklusiven Apps. DirectX12TK-Wiki
DirectXTex Verwenden Sie dies zum Lesen und Schreiben von DDS-Dateien sowie zum Ausführen verschiedener Verarbeitungsvorgänge für Texturinhalte, z. B. Größenänderung, Formatkonvertierung, MIP-Kartengenerierung, Blockkomprimierung für Texturressourcen der Direct3D-Laufzeit und Height-Map-Konvertierung in normale Kartenkonvertierung. DirectXTex-Wiki
DirectXMesh Verwenden Sie diese Methode, um verschiedene Verarbeitungsvorgänge für Geometrieinhalte auszuführen, z. B. das Generieren von Normalitäten und Tangentenrahmen, Berechnungen der Dreiecksadjazenz und die Optimierung des Scheitelpunktcaches. DirectXMesh-Wiki
DirectXMath Eine große Anzahl von Hilfsklassen und -methoden zur Unterstützung von Vektoren, Skalarn, Matrizen, Quaternionen und vielen anderen mathematischen Operationen. DirectXMath-Dokumentation auf MSDN
UVAtlas Verwenden Sie dies zum Erstellen und Packen eines Isocharttexturat atlas. UVAtlas wiki

Beispiele

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

Exemplarische Vorgehensweisen zum Hinzufügen von Code zum Aktivieren bestimmter Features finden Sie unter Exemplarische Vorgehensweisen für D3D12-Code.

Debugebene

Die Debugebene bietet eine umfassende zusätzliche Parameter- und Konsistenzüberprüfung (z. B. Überprüfen der Shaderbindung und Ressourcenbindung, Überprüfen der Parameterkonsistenz und Melden von Fehlerbeschreibungen).

Hinweis

Um Windows 10 ein Gerät zu erstellen, das die Debugebene unterstützt, aktivieren Sie das optionale Feature "Grafiktools". Wechseln Sie zum bereich Einstellungen unter System, Apps & Features, Optionale Features verwalten, Feature hinzufügen, und suchen Sie dann nach "Grafiktools".

Der Header, der zur Unterstützung der Debugebene D3D12SDKLayers.h erforderlich ist, ist standardmäßig in d3d12.h enthalten.

Wenn die Debugebene Speicherverluste auflistet, gibt sie eine Liste von Objektschnittstellenzeigern zusammen mit ihren Anzeigenamen aus. Der Standardmäßige Anzeigename ist < "unbenannt". > 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, dass Sie die Debugebene verwenden, um Ihre Apps zu debuggen, um sicherzustellen, dass sie von Fehlern und Warnungen bereinigt werden. Die Debugebene unterstützt Sie beim Schreiben von Direct3D 12-Code. Darüber hinaus kann Ihre Produktivität bei Verwendung der Debugebene steigen, da Sie sofort die Ursachen für obskure Renderingfehler oder sogar schwarze Bildschirme an der Quelle sehen können. Die Debugebene stellt Warnungen für viele Probleme bereit. Beispiel:

  • Vergessen Sie, eine Textur festzulegen, aber aus ihr in Ihrem Pixel-Shader zu lesen.
  • Ausgabetiefe, aber keine Begrenzung des Tiefenschablonenzustands.
  • Fehler bei der Texturerstellung mit INVALIDARG.

Legen Sie fest, dass der Compiler D3DCOMPILE _ DEBUG definiert, um den HLSL-Compiler an weist, Debuginformationen in das Shaderblob einzuschließen.

#define D3DCOMPILE_DEBUG 1

Ausführliche Informationen zu allen Debugschnittstellen und -methoden finden Sie in der Referenz zur Debugebene.

Übersichtsinformationen zur Verwendung der Debugebene finden Sie unter Grundlegendes zur D3D12-Debugebene.

Schulungsvideos

Es gibt eine Reihe von Videos zu Direct3D 12 und Windows 10 verwandten Videos in den Videotutorialsfür erweitertes Lernen von DirectX, einschließlich Videos zu Grafikdebuggingtools und Melden von Grafikfehlern.

Grundlegendes zu Direct3D 12