D3DHAL_DP2STATESET構造体 (d3dhal.h)

D3DHAL_DP2STATESET構造体は、実行するステートセット操作についてドライバーに通知するために使用されます。

構文

typedef struct _D3DHAL_DP2STATESET {
  DWORD             dwOperation;
  DWORD             dwParam;
  D3DSTATEBLOCKTYPE sbType;
} D3DHAL_DP2STATESET;

メンバー

dwOperation

実行する操作を指定します。 このメンバーの値は、次のいずれかになります。

Value 意味
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

定義済みの状態グループは指定されていません。

注釈

状態ブロック管理でのこの構造の使用の詳細については、「グラフィックス デザイン ガイド」の 「高速 状態管理」を参照してください。

要件

要件
Header d3dhal.h (D3dhal.h を含む)