StateBlock を使用して頂点の状態を保存する (Direct3D 9)
状態ブロックを使用すると、頂点の状態のみをキャプチャできます ( 「State Blocks Save and Restore State (Direct3D 9)」を参照)。 次の状態は頂点の状態です。
- 頂点のレンダリング状態 ( 「頂点パイプライン: レンダリング状態」を参照)。
- 頂点サンプラーの状態 ( 「頂点パイプライン: サンプラーの状態」を参照)。
- 頂点テクスチャの状態 ( 「頂点パイプライン: テクスチャの状態」を参照)。
- IDirect3DDevice9::SetNPatchMode の NPatch モード セグメント。
- IDirect3DDevice9::SetLight の各ライトと、ライトが IDirect3DDevice9::LightEnable で有効になっているかどうか。
- 現在の頂点シェーダーと各頂点シェーダー定数。
- 頂点ストリームごとに、 IDirect3DDevice9::SetStreamSourceFreq の区切り値を格納します。
- 現在の頂点宣言。
状態ブロックを使用して頂点の状態をキャプチャするには、 IDirect3DDevice9::CreateStateBlock を呼び出すときにD3DSBT_VERTEXSTATEを指定します。
頂点パイプライン: レンダリング状態
デバイスのレンダリング状態は、パイプラインのほぼすべての部分の動作に影響します。 レンダリング状態は、 IDirect3DDevice9::SetRenderState を呼び出すことによって設定されます。
次の表に、頂点の状態を設定するすべてのレンダリング状態を示します。
レンダリングの状態 | 既定値 |
---|---|
D3DRS_CULLMODE | D3DCULL_CCW |
D3DRS_FOGCOLOR | 0 |
D3DRS_FOGTABLEMODE | D3DFOG_NONE |
D3DRS_FOGSTART | 0 |
D3DRS_FOGEND | 1 |
D3DRS_FOGDENSITY | 1 |
D3DRS_RANGEFOGENABLE | FALSE |
D3DRS_AMBIENT | 0 |
D3DRS_COLORVERTEX | TRUE |
D3DRS_FOGVERTEXMODE | D3DFOG_NONE |
D3DRS_CLIPPING | TRUE |
D3DRS_LIGHTING | TRUE |
D3DRS_LOCALVIEWER | TRUE |
D3DRS_EMISSIVEMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_AMBIENTMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_DIFFUSEMATERIALSOURCE | D3DMCS_COLOR1 |
D3DRS_SPECULARMATERIALSOURCE | D3DMCS_COLOR2 |
D3DRS_VERTEXBLEND | D3DVBF_DISABLE |
D3DRS_CLIPPLANEENABLE | 0 |
D3DRS_POINTSIZE | ドライバー依存 |
D3DRS_POINTSIZE_MIN | 1 |
D3DRS_POINTSPRITEENABLE | FALSE |
D3DRS_POINTSCALEENABLE | FALSE |
D3DRS_POINTSCALE_A | 1 |
D3DRS_POINTSCALE_B | 0 |
D3DRS_POINTSCALE_C | 0 |
D3DRS_MULTISAMPLEANTIALIAS | TRUE |
D3DRS_MULTISAMPLEMASK | 0xffffffff |
D3DRS_PATCHEDGESTYLE | D3DPATCHEDGE_DISCRETE |
D3DRS_POINTSIZE_MAX | 1 |
D3DRS_INDEXEDVERTEXBLENDENABLE | FALSE |
D3DRS_TWEENFACTOR | 0 |
D3DRS_POSITIONDEGREE | D3DDEGREE_CUBIC |
D3DRS_NORMALDEGREE | D3DDEGREE_LINEAR |
D3DRS_MINTESSELLATIONLEVEL | 1 |
D3DRS_MAXTESSELLATIONLEVEL | 1 |
D3DRS_ADAPTIVETESS_X | 0 |
D3DRS_ADAPTIVETESS_Y | 0 |
D3DRS_ADAPTIVETESS_Z | 1 |
D3DRS_ADAPTIVETESS_W | 0 |
D3DRS_ENABLEADAPTIVETESSELLATION"/> | FALSE |
頂点パイプライン: サンプラーの状態
サンプラー状態は、フィルター処理、タイリング、テクスチャ座標アドレス モードなどのサンプリング関連のトピックを制御します。 IDirect3DDevice9::SetSamplerState を使用してサンプラーの状態を設定します (ディスプレイスメント マップをサンプリングするためにテセレータ ユニットで使用される状態を含む)。 DirectX 8 からの移植時にコンパイル時エラー検出を有効にするために、サンプラーの状態は "D3DSAMP_" プレフィックスで名前が変更されました。
次の表に、頂点の状態を設定するすべてのサンプラーの状態を示します。
サンプラーの状態 | 既定値 |
---|---|
D3DSAMP_DMAPOFFSET | 256 |
頂点パイプライン: テクスチャの状態
テクスチャ状態は、マルチテクスチャ ブレンダーのテクスチャ ブレンド操作を制御します。 テクスチャの状態を設定するには、 IDirect3DDevice9::SetTextureStageState を使用します。 テクスチャをサンプラー ステージに関連付けるには、 IDirect3DDevice9::SetTexture を使用します。
次の表に、頂点の状態を設定するすべてのテクスチャ状態を示します。
テクスチャの状態 | 既定値 |
---|---|
D3DTSS_TEXCOORDINDEX | 0 |
D3DTSS_TEXTURETRANSFORMFLAGS | D3DTTFF_DISABLE |
D3DTSS_TEXCOORDINDEXは、固定関数の頂点処理状態です。 プログラム可能な頂点シェーダーを使用する場合、この状態は無視されます。
関連トピック