D3DHAL_DP2STATESET結構(d3dhal.h)
D3DHAL_DP2STATESET 結構可用來通知驅動程式要執行的狀態集作業。
語法
typedef struct _D3DHAL_DP2STATESET {
DWORD dwOperation;
DWORD dwParam;
D3DSTATEBLOCKTYPE sbType;
} D3DHAL_DP2STATESET;
成員
dwOperation
指定要執行的作業。 這個成員的值可以是下列其中一項:
值 | 意義 |
---|---|
D3DHAL_STATESETBEGIN | 指定 dwParam 所參考之狀態集的開頭。 |
D3DHAL_STATESETCAPTURE | 指定要完成擷取。 指定此旗標時,驅動程式必須擷取目前狀態的快照集,該快照集符合傳入 dwParam 中句柄所參考的狀態區塊。 也就是說,只會擷取狀態區塊中指定的狀態。 如需狀態擷取的重要詳細數據,請參閱 加速狀態管理。 |
D3DHAL_STATESETCREATE | 僅限 DirectX 8.0 和更新版本。 收到此要求時,驅動程式應該建立 sbType 欄位中所指定類型的狀態區塊。 要記錄每個狀態區塊類型的資訊如下所述。 |
D3DHAL_STATESETDELETE | 指定應該刪除 dwParam 所參考的狀態集。 |
D3DHAL_STATESETEND | 指定 dwParam 所參考之狀態集的結尾。 |
D3DHAL_STATESETEXECUTE | 指定應該執行 dwParam 所參考的狀態集。 |
dwParam
指定狀態集句柄,這個句柄會參考目前 dwOperation所作的狀態區塊。
sbType
指定狀態區塊類型。 驅動程序應該忽略此成員,除非它實作轉譯狀態延伸模組,或實作 純裝置的支援 (僅限 DirectX 8.0 和更新版本)。
如果驅動程序實作延伸轉譯狀態,也就是轉譯狀態超出 Direct3D 運行時間提供的狀態,則可以使用 sbType 來判斷正在使用何種類型的預先定義轉譯狀態。 從此資訊中,驅動程式可以判斷如何適當地附加狀態區塊,以支援其擴充功能。
sbType 成員,它只適用於D3DHAL_STATESETBEGIN、D3DHAL_STATESETEND和D3DHAL_STATECREATE,指定狀態區塊類型,其中包含下列其中一個D3DSTATEBLOCKTYPE列舉型別。 如需詳細資訊,請參閱 DirectX SDK 檔。
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_DITHERENABLE
D3DRENDERSTATE_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_STENCILREF
D3DRENDERSTATE_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_EDGEANTIALIAS
D3DRENDERSTATE_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
未指定預先定義的狀態群組。
言論
如需在狀態區塊管理中使用這個結構的詳細資訊,請參閱圖形設計指南中的 加速狀態管理。
要求
要求 | 價值 |
---|---|
標頭 | d3dhal.h (包括 D3dhal.h) |