Einrichtung der Direct3D 12-Programmierungsumgebung
Beschreibt die Installation, die Tools und die unterstützten Bibliotheken, die eine produktive Direct3D 12-Entwicklungsumgebung bilden.
- Entwicklungsumgebung
- Unterstützte Sprachen
- Hilfsstrukturen
- Speicherverwaltungsbibliothek
- Unterstützte Tools und Bibliotheken
- Beispiele
- Debugebene
- Schulungsvideos
- Verwandte Themen
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.
Zugehörige Themen