D3D12-Code-Walk-Throughs
Dieser Abschnitt enthält Code für Beispielszenarien. Viele der exemplarische Vorgehensweisen enthalten Details dazu, welche Codierung einem einfachen Beispiel hinzugefügt werden muss, um zu vermeiden, dass der grundlegende Komponentencode für jedes Szenario wiederholt wird.
Die einfachste Komponente finden Sie im Abschnitt Erstellen einer einfachen Direct3D 12-Komponente Abschnitt. Die folgenden exemplarische Vorgehensweisen beschreiben erweiterte Szenarien.
In diesem Abschnitt
Thema | Beschreibung |
---|---|
D2D mit D3D11on12- |
Das D3D1211on12 Beispiel veranschaulicht, wie D2D-Inhalte über D3D12-Inhalte gerendert werden, indem Ressourcen zwischen einem 11-basierten Gerät und einem 12-basierten Gerät freigegeben werden. |
Multimotor-n-Body-Schwerkraftsimulation |
Das D3D12nBodyGravity- Beispiel veranschaulicht, wie Die Berechnung asynchron ausgeführt wird. Im Beispiel wird eine Reihe von Threads mit einer Computebefehlswarteschlange gedreht und die Berechnung der Arbeit an der GPU geplant, die eine n-Body-Schwerkraftsimulation durchführt. Jeder Thread arbeitet mit zwei Puffern voller Positions- und Geschwindigkeitsdaten. Bei jeder Iteration liest der Compute-Shader die aktuelle Position und Geschwindigkeitsdaten aus einem Puffer und schreibt die nächste Iteration in den anderen Puffer. Nach Abschluss der Iteration wechselt der Compute-Shader, welcher Puffer der SRV zum Lesen von Positions-/Geschwindigkeitsdaten ist und welche UAV zum Schreiben von Positions-/Geschwindigkeitsaktualisierungen ist, indem der Ressourcenzustand für jeden Puffer geändert wird. |
Vorababfragen |
Das D3D12PredicationQueries Beispiel veranschaulicht die Okklusions-Culling mithilfe von DirectX 12-Abfrage heaps und -prädication. In der exemplarischen Vorgehensweise wird der zusätzliche Code beschrieben, der zum Erweitern des HelloConstBuffer- Beispiels zur Behandlung von Vorababfragen erforderlich ist. |
dynamische Indizierung mit HLSL 5.1- |
Das D3D12DynamicIndexing Beispiel veranschaulicht einige der neuen HLSL-Features, die im Shadermodell 5.1 verfügbar sind – insbesondere dynamische Indizierung und ungebundene Arrays – um dasselbe Gitter mehrmals zu rendern, jedes Mal, wenn es mit einem dynamisch ausgewählten Material gerendert wird. Mit der dynamischen Indizierung können Shader jetzt in ein Array indexieren, ohne den Wert des Indexes zur Kompilierungszeit zu kennen. In Kombination mit ungebundenen Arrays fügt dies eine weitere Ebene der Dereferenzierung und Flexibilität für Shaderautoren und Kunstpipelinen hinzu. |
indirekte Zeichnung und GPU-Culling- |
Das D3D12ExecuteIndirect-Beispiel veranschaulicht, wie indirekte Befehle zum Zeichnen von Inhalten verwendet werden. Außerdem wird veranschaulicht, wie diese Befehle auf der GPU in einem Compute-Shader bearbeitet werden können, bevor sie ausgegeben werden. |