D3DHAL_DP2VERTEXSHADER Struktur (d3dhal.h)

Nur DirectX 8.0 und höhere Versionen.

Die D3DHAL_DP2VERTEXSHADER-Struktur legt den aktuellen Vertexshader fest oder löscht einen Vertex-Shader, je nachdem, welchen Opcode (D3DDP2OP_SETVERTEXSHADER oder D3DDP2OP_DELETEVERTEXSHADER) D3dDrawPrimitives2 erhalten hat.

Syntax

typedef struct _D3DHAL_DP2VERTEXSHADER {
  DWORD dwHandle;
} D3DHAL_DP2VERTEXSHADER;

Member

dwHandle

Ein Handle für die Anzeige.

Hinweise

Alle Treiber auf DirectX 8.0-Ebene 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 das Shaderhandle jedoch immer ein FVF-Code, der eine feste Funktionsverarbeitung der Vertexdaten angibt. Der Treiber sollte den im dwHandle-Member gespeicherten FVF-Code als Format der Vertexdaten in Stream 0 verwenden. Ein Treiber, der die programmierbare Vertexverarbeitung unterstützt, muss das Handle untersuchen, um zu bestimmen, ob es sich auf einen Shader bezieht, der zuvor mit D3DDP2OP_CREATEVERTEXSHADER oder einem FVF-Code erstellt wurde, und die entsprechende Aktion ausführen.

Pixel- und Vertexshader sind orthogonal. Wenn also ein Legacy-FVF-Code als aktueller Vertexshader ausgewählt wird, bedeutet dies keine Legacy-Pixelverarbeitung. Um die Pixelverarbeitung auf einen unterprogrammierbaren Modus zurückzusetzen, muss der aktuelle Pixelshader ebenfalls auf 0 (null) festgelegt werden. Beim Treiber sollte darauf geachtet werden, dass der Vertexverarbeitungszustand nur auf einen festen Funktionsmodus und nicht auf den Pixelverarbeitungszustand zurückgesetzt wird, wenn der Vertexshader auf einen FVF-Code festgelegt ist.

Beim Wechsel von der Vertexverarbeitung fester Funktionen zur programmierbaren Vertexverarbeitung sollten die Werte des Legacy-Renderzustands und der Matrizen beibehalten werden. Wenn und wenn ein Wechsel von der programmierbaren zur festen 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 aufweist, auf diesen Wert festgelegt werden. Die Werte aller anderen Konstantenregister sollten unverändert bleiben.

Für D3DDP2OP_SETVERTEXSHADERDECL-Vorgänge gibt die Runtime 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. Für D3DDP2OP_SETVERTEXSHADERFUNC-Vorgänge legt die Laufzeit dwHandle auf 0 (null) fest, um eine feste Funktionspipeline anzugeben.

Anforderungen

Anforderung Wert
Header d3dhal.h (include D3dhal.h)

Weitere Informationen

D3DDP2OP_CREATEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADERDECL

D3DDP2OP_DELETEVERTEXSHADERFUNC

D3DDP2OP_SETSTREAMSOURCE

D3DDP2OP_SETSTREAMSOURCEUM

D3DDP2OP_SETVERTEXSHADER

D3DDP2OP_SETVERTEXSHADERDECL

D3DDP2OP_SETVERTEXSHADERFUNC

D3DHAL_DP2CREATEVERTEXSHADER

D3DHAL_DP2SETVERTEXSHADERCONST

D3dDrawPrimitives2