D3DDDIARG_STATESET 結構 (d3dumddi.h)
D3DDDIARG_STATESET結構描述如何設定狀態區塊。
語法
typedef struct _D3DDDIARG_STATESET {
[in] UINT Operation;
[in] D3DSTATEBLOCKTYPE StateBlockType;
[in/out] HANDLE hStateSet;
} D3DDDIARG_STATESET;
成員
[in] Operation
要執行的作業,可以是下列其中一個值。
ReplTest1 | 意義 |
---|---|
D3DHAL_STATESETBEGIN | 開始 hStateSet 成員中句柄所參考的狀態區塊。 |
D3DHAL_STATESETCAPTURE | 執行擷取。 指定此旗標時,驅動程式必須擷取目前狀態的快照集,該快照集符合 hStateSet 中句柄所參考的狀態區塊。 也就是說,只會擷取狀態區塊中指定的狀態。 |
D3DHAL_STATESETCREATE | 建立 StateBlockType 成員中指定的類型狀態區塊。 要記錄每個狀態區塊類型的資訊會在 StateBlockType 中說明。 |
D3DHAL_STATESETDELETE | 刪除 hStateSet 中句柄所參考的狀態區塊。 |
D3DHAL_STATESETEND | 結束 hStateSet 中句柄所參考的狀態區塊。 |
D3DHAL_STATESETEXECUTE | 執行 hStateSet 中句柄所參考的狀態區塊。 |
[in] StateBlockType
D3DSTATEBLOCKTYPE型別值,指出驅動程式應該記錄的狀態類型。 這個成員可以是下列其中一個值。
ReplTest1 | 意義 |
---|---|
D3DSBT_ALL | 驅動程序應該擷取所有狀態。 當要求以純裝置模式擷取所有狀態時,驅動程式應該擷取所有狀態,但目前頂點數據流狀態、目前索引數據流狀態和目前實現的紋理除外。 驅動程式應該擷取 (,也就是記錄) 檢視區、所有世界轉換、檢視轉換、投影轉換、所有紋理階段的紋理轉換、所有使用者剪輯平面、目前材質、狀態區塊建立之前使用的所有光線、目前的頂點著色器句柄、目前的圖元著色器句柄、目前的頂點著色器常數、 和目前的圖元著色器常數。 此外,驅動程式應該擷取下列轉譯和紋理階段狀態:D3DRENDERSTATE_SPECULARENABLE D3DRENDERSTATE_ZENABLE D3DRENDERSTATE_FILLMODE D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_LINEPATTERN D3DRENDERSTATE_ZWRITEENABLE D3DRENDERSTATE_ALPHATESTENABLE D3DRENDERSTATE_LASTPIXEL D3DRENDERSTATE_SRCBLEND D3DRENDERSTATE_DESTBLEND D3DRENDERSTATE_CULLMODE D3DRENDERSTATE_ZFUNC D3DRENDERSTATE_ALPHAREF D3DRENDERSTATE_ALPHAFUNC D3DRENDERSTATE_DITHERENABLED3DRENDERSTATE_FOGENABLE D3DRENDERSTATE_STIPPLEDALPHA D3DRENDERSTATE_FOGCOLOR D3DRENDERSTATE_FOGTABLEMODE D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_EDGEANTIALIAS D3DRENDERSTATE_ALPHABLENDENABLE D3DRENDERSTATE_ZBIAS D3DRENDERSTATE_RANGEFOGENABLE D3DRENDERSTATE_STENCILENABLE D3DRENDERSTATE_STENCILFAIL D3DRENDERSTATE_STENCILZFAIL D3DRENDERSTATE_STENCILPASS D3DRENDERSTATE_STENCILFUNC D3DRENDERSTATE_STENCILREFD3DRENDERSTATE_STENCILMASK D3DRENDERSTATE_STENCILWRITEMASK D3DRENDERSTATE_TEXTUREFACTOR D3DRENDERSTATE_WRAP0 D3DRENDERSTATE_WRAP1 D3DRENDERSTATE_WRAP2 D3DRENDERSTATE_WRAP3 D3DRENDERSTATE_WRAP4 D3DRENDERSTATE_WRAP5 D3DRENDERSTATE_WRAP6 D3DRENDERSTATE_WRAP7 D3DRENDERSTATE_AMBIENT D3DRENDERSTATE_COLORVERTEX D3DRENDERSTATE_FOGVERTEXMODE D3DRENDERSTATE_CLIPPING D3DRENDERSTATE_LIGHTING D3DRENDERSTATE_NORMALIZENORMALS D3DRENDERSTATE_LOCALVIEWER D3DRENDERSTATE_EMISSIVEMATERIALSOURCE D3DRENDERSTATE_AMBIENTMATERIALSOURCE D3DRENDERSTATE_DIFFUSEMATERIALSOURCE D3DRENDERSTATE_SPECULARMATERIALSOURCE D3DRENDERSTATE_VERTEXBLEND D3DRENDERSTATE_CLIPPLANEENABLE D3DRS_SOFTWAREVERTEXPROCESSING D3DRS_POINTSIZE D3DRS_POINTSIZE_MIN D3DRS_POINTSPRITEENABLE D3DRS_POINTSCALEENABLE D3DRS_POINTSCALE_A D3DRS_POINTSCALE_B D3DRS_POINTSCALE_C D3DRS_MULTISAMPLEANTIALIAS D3DRS_MULTISAMPLEMASK D3DRS_PATCHEDGESTYLE D3DRS_PATCHSEGMENTS D3DRS_POINTSIZE_MAX D3DRS_INDEXEDVERTEXBLENDENABLE D3DRS_COLORWRITEENABLE D3DRS_TWEENFACTOR D3DRS_BLENDOP 驅動程式應該記錄下列紋理階段狀態: D3DTSS_COLOROP D3DTSS_COLORARG1 D3DTSS_COLORARG2 D3DTSS_ALPHAOP D3DTSS_ALPHAARG1 D3DTSS_ALPHAARG2 D3DTSS_BUMPENVMAT00 D3DTSS_BUMPENVMAT01 D3DTSS_BUMPENVMAT10 D3DTSS_BUMPENVMAT11 D3DTSS_TEXCOORDINDEX D3DTSS_ADDRESSU D3DTSS_ADDRESSV D3DTSS_BORDERCOLOR D3DTSS_MAGFILTER D3DTSS_MINFILTER D3DTSS_MIPFILTER D3DTSS_MIPMAPLODBIAS D3DTSS_MAXMIPLEVEL D3DTSS_MAXANISOTROPY D3DTSS_BUMPENVLSCALE D3DTSS_BUMPENVLOFFSET D3DTSS_TEXTURETRANSFORMFLAGS D3DTSS_ADDRESSW D3DTSS_COLORARG0 D3DTSS_ALPHAARG0 D3DTSS_RESULTARG |
D3DSBT_PIXELSTATE | 驅動程式應該只擷取像素狀態。 在純裝置模式中擷取像素狀態時,驅動程式應該擷取 (也就是記錄) 目前的圖元著色器句柄、目前的圖元著色器常數,以及下列圖元處理相關的轉譯狀態和紋理階段狀態: D3DRENDERSTATE_ZENABLE D3DRENDERSTATE_FILLMODE D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_LINEPATTERN D3DRENDERSTATE_ZWRITEENABLE D3DRENDERSTATE_ALPHATESTENABLE D3DRENDERSTATE_LASTPIXEL D3DRENDERSTATE_SRCBLEND D3DRENDERSTATE_DESTBLEND D3DRENDERSTATE_ZFUNC D3DRENDERSTATE_ALPHAREF D3DRENDERSTATE_ALPHAFUNC D3DRENDERSTATE_DITHERENABLE D3DRENDERSTATE_STIPPLEDALPHA D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_EDGEANTIALIASD3DRENDERSTATE_ALPHABLENDENABLE D3DRENDERSTATE_ZBIAS D3DRENDERSTATE_STENCILENABLE D3DRENDERSTATE_STENCILFAIL D3DRENDERSTATE_STENCILZFAIL D3DRENDERSTATE_STENCILPASS D3DRENDERSTATE_STENCILFUNC D3DRENDERSTATE_STENCILREF D3DRENDERSTATE_STENCILMASK D3DRENDERSTATE_STENCILWRITEMASK D3DRENDERSTATE_TEXTUREFACTOR D3DRENDERSTATE_WRAP0 D3DRENDERSTATE_WRAP1 D3DRENDERSTATE_WRAP2 D3DRENDERSTATE_WRAP3 D3DRENDERSTATE_WRAP4 D3DRENDERSTATE_WRAP5 D3DRENDERSTATE_WRAP6 D3DRENDERSTATE_WRAP7 D3DRS_COLORWRITEENABLE D3DRS_BLENDOP D3DTSS_COLOROP D3DTSS_COLORARG1 D3DTSS_COLORARG2 D3DTSS_ALPHAOP D3DTSS_ALPHAARG1 D3DTSS_ALPHAARG2 D3DTSS_BUMPENVMAT00 D3DTSS_BUMPENVMAT01 D3DTSS_BUMPENVMAT10 D3DTSS_BUMPENVMAT11 D3DTSS_TEXCOORDINDEX D3DTSS_ADDRESSU D3DTSS_ADDRESSV D3DTSS_BORDERCOLOR D3DTSS_MAGFILTER D3DTSS_MINFILTER D3DTSS_MIPFILTER D3DTSS_MIPMAPLODBIAS D3DTSS_MAXMIPLEVEL D3DTSS_MAXANISOTROPY D3DTSS_BUMPENVLSCALE D3DTSS_BUMPENVLOFFSET D3DTSS_TEXTURETRANSFORMFLAGS D3DTSS_ADDRESSW D3DTSS_COLORARG0 D3DTSS_ALPHAARG0 D3DTSS_RESULTARG |
D3DSBT_VERTEXSTATE | 驅動程式應該只擷取頂點狀態。 在純裝置模式中擷取頂點狀態時,驅動程式應該擷取 (記錄) 在建立狀態區塊之前使用的所有光線、目前的頂點著色器句柄、目前的頂點著色器常數,以及下列頂點處理相關的轉譯狀態和紋理階段狀態: D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_SPECULARENABLE D3DRENDERSTATE_CULLMODE D3DRENDERSTATE_FOGENABLE D3DRENDERSTATE_FOGCOLOR D3DRENDERSTATE_FOGTABLEMODE D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_RANGEFOGENABLE D3DRENDERSTATE_AMBIENT D3DRENDERSTATE_COLORVERTEX D3DRENDERSTATE_FOGVERTEXMODE D3DRENDERSTATE_CLIPPING D3DRENDERSTATE_LIGHTING D3DRENDERSTATE_NORMALIZENORMALS D3DRENDERSTATE_LOCALVIEWER D3DRENDERSTATE_EMISSIVEMATERIALSOURCE D3DRENDERSTATE_AMBIENTMATERIALSOURCE D3DRENDERSTATE_DIFFUSEMATERIALSOURCE D3DRENDERSTATE_SPECULARMATERIALSOURCE D3DRENDERSTATE_VERTEXBLEND D3DRENDERSTATE_CLIPPLANEENABLE D3DRS_SOFTWAREVERTEXPROCESSING D3DRS_POINTSIZE D3DRS_POINTSIZE_MIN D3DRS_POINTSPRITEENABLE D3DRS_POINTSCALEENABLE D3DRS_POINTSCALE_A D3DRS_POINTSCALE_B D3DRS_POINTSCALE_C D3DRS_MULTISAMPLEANTIALIAS D3DRS_MULTISAMPLEMASK D3DRS_PATCHEDGESTYLE D3DRS_PATCHSEGMENTS D3DRS_POINTSIZE_MAX D3DRS_INDEXEDVERTEXBLENDENABLE D3DRS_TWEENFACTOR D3DTSS_TEXCOORDINDEX D3DTSS_TEXTURETRANSFORMFLAGS |
NULL | 未指定任何預先定義的狀態群組。 |
[in/out] hStateSet
由 Operation 成員中指定的作業操作的狀態區塊句柄。
當 Operation 設定為 D3DHAL_STATESETEXECUTE 時,狀態區塊句柄會在呼叫使用者模式顯示驅動程式的 StateSet 函式時傳遞。
當 Operation 設定為 D3DHAL_STATESETBEGIN 和 D3DHAL_STATESETCREATE 時,StateSet 函式會傳回狀態區塊句柄。
備註
如果使用者模式顯示驅動程式實作擴充轉譯狀態 (也就是說,在 Microsoft Direct3D 運行時間提供) 以外的轉譯狀態,驅動程式會使用 StateBlockType 成員來判斷所使用的預先定義轉譯狀態類型。 從這項資訊中,驅動程式可以判斷如何適當地附加狀態區塊以支援其擴充功能。
StateBlockType 成員僅適用於D3DHAL_STATESETBEGIN、D3DHAL_STATESETEND和D3DHAL_STATECREATE作業。 如需D3DSTATEBLOCKTYPE列舉類型的詳細資訊,請參閱 Microsoft Windows SDK 檔。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。 |
標頭 | d3dumddi.h (包含 D3dumddi.h) |