Rendern eines Effekts (Direct3D 10)
Ein Effekt kann zum Speichern von Informationen oder zum Rendern mithilfe einer Gruppe von Status verwendet werden. Jede Technik spezifiziert Vertex-Shader, Geometrie-Shader, Pixel-Shader, Shader-Status, Sampler- und Textur-Status und andere Pipeline-Status. Sobald Sie also einen Zustand in einem Effekt organisiert haben, können Sie den Rendering-Effekt, der aus diesem Zustand resultiert, kapseln, indem Sie den Effekt erstellen und rendern.
Die Vorbereitung eines Effekts für das Rendern erfolgt in mehreren Schritten. Der erste ist die Kompilierung, die den HLSL-ähnlichen Code gegen die HLSL-Sprachsyntax und die Regeln des Effekt-Frameworks prüft. Sie können einen Effekt von Ihrer Anwendung aus mit Hilfe von API-Aufrufen kompilieren oder Sie können einen Effekt offline mit Hilfe des Effekt-Compiler-Dienstprogramms kompilieren. Sobald Ihr Effekt erfolgreich kompiliert wurde, erstellen Sie ihn, indem Sie einen anderen (aber sehr ähnlichen) Satz von APIs aufrufen.
Wenn der Effekt erstellt ist, folgen zwei weitere Schritte, damit Sie ihn verwenden können. Zunächst müssen Sie die Werte des Effektzustands (die Werte der Effektvariablen) mit Hilfe einer Reihe von Methoden zum Setzen des Zustands initialisieren. Bei einigen Variablen kann dies einmalig bei der Erstellung eines Effekts geschehen, andere müssen jedes Mal aktualisiert werden, wenn Ihre Anwendung die Renderschleife aufruft. Sobald die Effektvariablen festgelegt sind, weisen Sie die Laufzeitumgebung an, den Effekt durch Anwendung einer Technik zu rendern. Diese Themen werden im Folgenden ausführlicher behandelt.
- Kompilieren eines Effekts (Direct3D 10)
- Erstellen eines Effekts (Direct3D 10)
- Festlegen des Effektstatus (Direct3D 10)
- Anwenden einer Technik (Direct3D 10)
Natürlich gibt es Leistungsüberlegungen für die Verwendung von Effekten. Diese Überlegungen stimmen weitgehend mit denen überein, wenn Sie keinen Effekt verwenden. Zum Beispiel die Minimierung der Anzahl von Zustandsänderungen oder die Sortierung der Variablen, die aktualisiert werden müssen, nach Häufigkeit. Diese Taktik dient dazu, die Datenmenge zu minimieren, die von der CPU an die GPU gesendet werden muss, und somit mögliche Synchronisationsprobleme zu verringern.
Zugehörige Themen