Freigeben über


Effekte (Direct3D 10)

Ein DirectX-Effekt ist eine Auflistung des Pipelinezustands, der durch in HLSL geschriebene Ausdrücke und eine für das Effektframework spezifische Syntax festgelegt wird. Verwenden Sie nach dem Kompilieren eines Effekts die Effektframework-APIs zum Rendern. Die Effektfunktionalität kann von einem so einfachen Wie einem Vertex-Shader, der geometrie transformiert, und einem Pixel-Shader, der eine Volltonfarbe ausgibt, bis hin zu einer Renderingtechnik reichen, die mehrere Durchläufe erfordert, jede Phase der Grafikpipeline verwendet und den Shaderzustand sowie den Pipelinezustand bearbeitet, der nicht den programmierbaren Shadern zugeordnet ist.

Der erste Schritt besteht darin, den Zustand zu organisieren, den Sie in einem Effekt steuern möchten. Dies umfasst shaderstatus (Vertex-, Geometrie- und Pixel-Shader), Textur- und Samplerzustand, der von den Shadern verwendet wird, und anderer nicht programmierbarer Pipelinezustand. Sie können einen Effekt im Arbeitsspeicher als Textzeichenfolge erstellen, aber in der Regel wird die Größe so groß, dass es praktisch ist, den Effektzustand in einer Effektdatei zu speichern (eine Textdatei, die in einer FX-Erweiterung endet). Um einen Effekt zu verwenden, müssen Sie ihn kompilieren (um die HLSL-Syntax sowie die Effektframeworksyntax zu überprüfen), den Effektzustand über API-Aufrufe initialisieren und die Renderschleife so ändern, dass die Rendering-APIs aufgerufen werden.

Ein Effekt kapselt den gesamten für einen bestimmten Effekt erforderlichen Renderzustand in eine einzelne Renderingfunktion, die als Technik bezeichnet wird. Ein Pass ist eine Untermenge einer Technik, die den Renderzustand enthält. Um einen Effekt für das Rendern mit mehreren Durchläufen zu implementieren, implementieren Sie einen oder mehrere Durchläufe innerhalb einer Technik. Angenommen, Sie wollten eine Geometrie mit einem Satz Von Tiefen-/Schablonenpuffern rendern und dann einige Sprites darüber zeichnen. Sie könnten das Geometrierendering im ersten Durchlauf und die Sprite-Zeichnung im zweiten Durchlauf implementieren. Um den Effekt zu rendern, rendern Sie einfach beide Durchläufe in Ihrer Renderschleife. Sie können eine beliebige Anzahl von Techniken in einem Effekt implementieren. Natürlich, je größer die Anzahl der Techniken, desto größer die Kompilierzeit für den Effekt. Eine Möglichkeit, diese Funktionalität zu nutzen, besteht darin, Effekte mit Techniken zu erstellen, die für die Ausführung auf unterschiedlicher Hardware konzipiert sind. Dadurch kann eine Anwendung die Leistung basierend auf den erkannten Hardwarefunktionen ordnungsgemäß herabstufen.

Programmierhandbuch für Direct3D 10