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。 驅動程式也應該據以更新其私人狀態。

顯示具有D3DDP2OP_RENDERSTATE命令和兩個D3DHAL_DP2RENDERSTATE結構的命令緩衝區圖 雖然轉譯狀態的類型是布爾值,但記錄為只接受 TRUE (1) 和 FALSE (0) 運行時間不會驗證此值,並且接受任何子零值為 true。 範例驅動程式會嚴格解譯這個值,並將 1 以外的值解譯為 TRUE。 不過,因為運行時間不提供驗證,所以您的驅動程序應該將 0 解譯為 FALSE ,並將任何其他子零值解譯為 TRUE。 在此方面,您的驅動程式不應該模擬提供之範例驅動程序的行為。

規格需求

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

另請參閱

D3DDP2OP_RENDERSTATE

D3DHAL_DP2COMMAND

D3DHAL_DRAWPRIMITIVES2DATA

D3DRENDERSTATETYPE

D3dDrawPrimitives2