D3DHAL_DP2RENDERSTATE 結構 (d3dhal.h)
當 D3DHAL_DP2COMMAND 結構的bCommand 成員設定為 D3DDP2OP_RENDERSTATE 時,D3dDrawPrimitives2 回呼會從命令緩衝區剖析一或多個D3DHAL_DP2RENDERSTATE結構,並用來設定適當的轉譯狀態。
語法
typedef struct _D3DHAL_DP2RENDERSTATE {
D3DRENDERSTATETYPE RenderState;
union {
D3DVALUE dvState;
DWORD dwState;
};
} D3DHAL_DP2RENDERSTATE;
成員
RenderState
指定D3DRENDERSTATETYPE列舉型別,指出要更新的轉譯狀態。 DirectX SDK 檔中會說明應用層級所要求的轉譯狀態。 驅動程序獨佔使用的轉譯狀態會在 D3DRENDERSTATETYPE中描述。
dvState
指定驅動程序應該使用 來更新 RenderState 成員所識別之轉譯狀態的值。 當 RenderState 需要D3DVALUE時,這個成員是有效的。
dwState
指定驅動程序應該將 RenderState 所識別的轉譯狀態更新為 的值。 當 RenderState 需要 DWORD 時,這個成員是有效的。
備註
D3dDrawPrimitives2 應該從命令緩衝區處理 wStateCount D3DHAL_DP2RENDERSTATE 結構。 wStateCount 的值是在 D3DHAL_DP2COMMAND 結構中指定。
針對每個D3DHAL_DP2RENDERSTATE結構,D3dDrawPrimitives2 應該更新驅動程式的私人轉譯狀態,以及D3DHAL_DRAWPRIMITIVES2DATA的lpdwRStates 成員所指向的轉譯狀態陣列。 在公用轉譯狀態陣列中更新的專案為 lpdwRStates[RenderState]。
下圖顯示範例命令緩衝區的一部分,其中包含D3DDP2OP_RENDERSTATE命令和兩個D3DHAL_DP2RENDERSTATE結構。 驅動程式應該將 lpdwRStates[D3DRENDERSTATE_FILLMODE] 更新為 D3DFILL_SOLID,並將 lpdwRStates[D3DRENDERSTATE_SHADEMODE] 更新為D3DSHADE_GOURAUD。 驅動程式也應該據以更新其私人狀態。
雖然轉譯狀態的類型是布爾值,但記錄為只接受 TRUE (1) 和 FALSE (0) 運行時間不會驗證此值,並且接受任何子零值為 true。 範例驅動程式會嚴格解譯這個值,並將 1 以外的值解譯為 TRUE。 不過,因為運行時間不提供驗證,所以您的驅動程序應該將 0 解譯為 FALSE ,並將任何其他子零值解譯為 TRUE。 在此方面,您的驅動程式不應該模擬提供之範例驅動程序的行為。規格需求
需求 | 值 |
---|---|
標頭 | d3dhal.h (包含 D3dhal.h) |
另請參閱
D3DDP2OP_RENDERSTATE