D3DHAL_DP2VERTEXSHADER Struktur (d3dhal.h)
Nur DirectX 8.0 und höhere Versionen.
Die D3DHAL_DP2VERTEXSHADER Struktur legt den aktuellen Vertex-Shader fest oder löscht einen Vertex-Shader, abhängig von der opcode empfangen (D3DDP2OP_SETVERTEXSHADER oder D3DDP2OP_DELETEVERTEXSHADER) durch D3dDrawPrimitives2.
Syntax
typedef struct _D3DHAL_DP2VERTEXSHADER {
DWORD dwHandle;
} D3DHAL_DP2VERTEXSHADER;
Angehörige
dwHandle
Ein Ziehpunkt für die Anzeige.
Bemerkungen
Alle DirectX 8.0-Ebenentreiber müssen das D3DDP2OP_SETVERTEXSHADER-Token unterstützen, da es gesendet wird, auch wenn der Treiber keine programmierbare Vertexverarbeitung unterstützt. In diesem Fall ist der Shaderhandle jedoch immer ein FVF-Code, der die feste Funktionsverarbeitung der Vertexdaten angibt. Der Treiber sollte den FVF-Code verwenden, der im dwHandle Member als Format der Vertexdaten in Datenstrom 0 gespeichert ist. Ein Treiber, der die programmierbare Vertexverarbeitung unterstützt, muss das Handle untersuchen, um festzustellen, ob er auf einen shader verweist, der zuvor mit D3DDP2OP_CREATEVERTEXSHADER oder einem FVF-Code erstellt wurde und die entsprechende Aktion ausführt.
Pixel- und Vertex-Shader sind orthogonal. Wenn daher ein älteren FVF-Code als aktueller Vertex-Shader ausgewählt wird, bedeutet dies keine legacy-Pixelverarbeitung. Um die Pixelverarbeitung auf einen unterprogrammierbaren Modus zurückzusetzen, muss der aktuelle Pixelshader auch auf Null festgelegt werden. Achten Sie darauf, dass im Treiber nur der Vertexverarbeitungszustand auf einen festen Funktionsmodus und nicht auf den Pixelverarbeitungszustand zurückgesetzt wird, wenn der Vertex-Shader auf einen FVF-Code festgelegt ist.
Wenn Sie von der Verarbeitung fester Funktionen zur programmierbaren Vertexverarbeitung wechseln, sollten die Werte des älteren Renderzustands und der Matrizen beibehalten werden. Wenn und wenn ein Wechsel von programmierbarer zu fester Funktionsvertexverarbeitung erfolgt (der Treiber empfängt eine D3DDP2OP_SETVERTEXSHADER mit einem FVF als Shaderhandle), sollte dieser beibehaltene Zustand wiederhergestellt werden.
Beim Wechseln zwischen programmierbaren Shadern sollte jedes Konstantenregister, das einen in der Definition dieses Shaders angegebenen Wert enthält, auf diesen Wert festgelegt werden. Die Werte aller anderen Konstantenregister sollten unverändert bleiben.
Für D3DDP2OP_SETVERTEXSHADERDECL Vorgänge gibt die Laufzeit einen älteren FVF-Code oder ein DirectX 9.0-Deklarationshandle im dwHandle Member an. Die Laufzeit gibt ein DirectX 9.0-Deklarationshandle an, indem Bit 0 des Handles festgelegt wird. Bei D3DDP2OP_SETVERTEXSHADERFUNC Vorgängen legt die Laufzeit dwHandle- auf Null fest, um eine pipeline mit fester Funktion anzugeben.
Anforderungen
Anforderung | Wert |
---|---|
Header- | d3dhal.h (einschließlich D3dhal.h) |
Siehe auch
D3DDP2OP_CREATEVERTEXSHADER
D3DDP2OP_DELETEVERTEXSHADER
D3DDP2OP_DELETEVERTEXSHADERDECL
D3DDP2OP_DELETEVERTEXSHADERFUNC
D3DDP2OP_SETSTREAMSOURCE
D3DDP2OP_SETSTREAMSOURCEUM
D3DDP2OP_SETVERTEXSHADER
D3DDP2OP_SETVERTEXSHADERDECL
D3DDP2OP_SETVERTEXSHADERFUNC