D3DDDIARG_STATESET 構造体 (d3dumddi.h)

D3DDDIARG_STATESET構造体では、状態ブロックを設定する方法について説明します。

構文

typedef struct _D3DDDIARG_STATESET {
  [in]     UINT              Operation;
  [in]     D3DSTATEBLOCKTYPE StateBlockType;
  [in/out] HANDLE            hStateSet;
} D3DDDIARG_STATESET;

メンバー

[in] Operation

実行する操作。次のいずれかの値を指定できます。

Value 意味
D3DHAL_STATESETBEGIN hStateSet メンバーのハンドルによって参照される状態ブロックを開始します。
D3DHAL_STATESETCAPTURE キャプチャを実行します。 このフラグを指定すると、ドライバーは、hStateSet のハンドルによって参照される状態ブロックに一致する現在の状態のスナップショットをキャプチャする必要があります。 つまり、状態ブロックで指定された状態のみがキャプチャされます。
D3DHAL_STATESETCREATE StateBlockType メンバーで指定された型の状態ブロックを作成します。 状態ブロックの種類ごとに記録する情報については、「StateBlockType」を参照してください。
D3DHAL_STATESETDELETE hStateSet のハンドルによって参照されている状態ブロックを削除します。
D3DHAL_STATESETEND hStateSet のハンドルによって参照される状態ブロックを終了します。
D3DHAL_STATESETEXECUTE hStateSet でハンドルによって参照される状態ブロックを実行します。

[in] StateBlockType

ドライバーが記録する必要がある状態の種類を示すD3DSTATEBLOCKTYPE型指定された値。 このメンバーには、次のいずれかの値を指定できます。

Value 意味
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 関数の呼び出しで渡されます。

StateSet 関数は、Operation が D3DHAL_STATESETBEGIN に設定され、D3DHAL_STATESETCREATEされると、状態ブロック ハンドルを返します。

注釈

ユーザー モードディスプレイ ドライバーが拡張レンダリング状態 (つまり、Microsoft Direct3D ランタイムが提供するものを超えるレンダリング状態) を実装する場合、ドライバーは StateBlockType メンバーを使用して、使用されている定義済みのレンダリング状態の種類を決定します。 この情報から、ドライバーは、拡張機能をサポートするために状態ブロックを適切に追加する方法を決定できます。

StateBlockType メンバーは、D3DHAL_STATESETBEGIN、D3DHAL_STATESETEND、およびD3DHAL_STATECREATE操作に対してのみ有効です。 D3DSTATEBLOCKTYPE列挙型の詳細については、Microsoft Windows SDKドキュメントを参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。
Header d3dumddi.h (D3dumddi.h を含む)

こちらもご覧ください

StateSet