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