共用方式為


D3DHAL_DP2VERTEXSHADER結構 (d3dhal.h)

僅限 DirectX 8.0 和更新版本。

D3DHAL_DP2VERTEXSHADER 結構會設定目前的頂點著色器,或刪除頂點著色器,視 D3dDrawPrimitives2 收到的 opcode (D3DDP2OP_SETVERTEXSHADER 或D3DDP2OP_DELETEVERTEXSHADER) 而定。

語法

typedef struct _D3DHAL_DP2VERTEXSHADER {
  DWORD dwHandle;
} D3DHAL_DP2VERTEXSHADER;

成員

dwHandle

顯示器的句柄。

備註

所有 DirectX 8.0 層級驅動程式都必須支援D3DDP2OP_SETVERTEXSHADER令牌,因為即使驅動程式不支援可程式化的頂點處理,也會傳送令牌。 不過,在此情況下,著色器句柄一律是 FVF 程式代碼,表示頂點數據的固定函式處理。 驅動程式應該使用 儲存在 dwHandle 成員中的 FVF 程式代碼作為數據流零中頂點數據的格式。 支援可程式化頂點處理的驅動程式必須檢查句柄,以判斷它是否參考先前使用 D3DDP2OP_CREATEVERTEXSHADER 或 FVF 程式代碼建立的著色器,並採取適當的動作。

像素和頂點著色器是正交的。 因此,如果選取舊版 FVF 程式代碼作為目前的頂點著色器,這並不代表舊版像素處理。 若要將像素處理重設為子程序設計模式,目前圖元著色器也必須設定為零。 在驅動程式中應該小心,只在頂點著色器設定為 FVF 程式代碼時,將頂點處理狀態重設為固定函式模式,而不是圖元處理狀態。

從固定函式頂點處理切換至可程式化的頂點處理時,應保留舊版轉譯狀態和矩陣的值。 如果在驅動程式收到具有 FVF 做為著色器句柄的D3DDP2OP_SETVERTEXSHADER) ,則應該還原從可程式化到固定函式頂點處理的切換 (。

在可程式化著色器之間切換時,任何在定義中指定值的常數緩存器都應該設定為該值。 所有其他常數緩存器的值應該保持不變。

針對D3DDP2OP_SETVERTEXSHADERDECL作業,運行時間會在 dwHandle 成員中指定舊版 FVF 程式代碼或 DirectX 9.0 宣告句柄。 運行時間會藉由設定句柄的位 0 來指出 DirectX 9.0 宣告句柄。 針對D3DDP2OP_SETVERTEXSHADERFUNC作業,運行時間會將 dwHandle 設定為零,以指出固定函式管線。

規格需求

需求
標頭 d3dhal.h (包含 D3dhal.h)

另請參閱

D3DDP2OP_CREATEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADERDECL

D3DDP2OP_DELETEVERTEXSHADERFUNC

D3DDP2OP_SETSTREAMSOURCE

D3DDP2OP_SETSTREAMSOURCEUM

D3DDP2OP_SETVERTEXSHADER

D3DDP2OP_SETVERTEXSHADERDECL

D3DDP2OP_SETVERTEXSHADERFUNC

D3DHAL_DP2CREATEVERTEXSHADER

D3DHAL_DP2SETVERTEXSHADERCONST

D3dDrawPrimitives2