Platform SDK: DirectX

ステート ブロックの取得

[C++]

IDirect3DDevice7::CaptureStateBlock メソッドは、既存のステート ブロック内の値を更新してデバイスの現在のステートに反映する。このメソッドは、パラメータ dwBlockHandle を 1 つだけ受け取る。このパラメータは、呼び出しが成功した場合にデバイスの現在のステートの取り込み先となるステート ブロックを識別する。

アプリケーションで記録済みのステート ブロックを更新して若干異なるステート設定を含める場合には、IDirect3DDevice7::CaptureStateBlock メソッドが特に便利である。これを行うには、既存のステート ブロックを適用し、必要な設定変更を行い、システムのステートをステート ブロックに取り込む。これについて、次のコード例で示す。

// dwMyBlock 変数には、以前に記録されたデバイス ステート セットへの
// ハンドルが格納されている。

// 現在のステート ブロックを設定する。
d3dDevice->ApplyStateBlock(dwMyBlock);

// 必要に応じてステート ブロックを変更する。
.
.
.

// 修正したデバイス ステート データを既存のブロックに取り込む。
d3dDevice->CaptureStateBlock(dwMyBlock);
 

CaptureStateBlock メソッドは、デバイスのステート全体を取り込むのではなく、ステート ブロック内の既存のステート値を更新するのみである。たとえば、次のコード例で表す 2 つの処理が記録されたステート ブロックがあるとする。

SetRenderState(D3DRENDERSTATE_SHADEMODE, D3DSHADE_GOURAUD);
SetTexture(0, lpd3dAnyTexture);
 

ステート ブロックが初めに記録されて以降、2 つの設定のいずれかを変更した場合、IDirect3DDevice7::CaptureStateBlock メソッドは、ブロック内で変更されたステートのみ新しい値に更新する。

[Visual Basic]

Direct3DDevice7.CaptureStateBlock メソッドは、既存のステート ブロック内の値を更新してデバイスの現在のステートに反映する。このメソッドは、パラメータ blockHandle を 1 つだけ受け取る。このパラメータは、呼び出しが成功した場合にデバイスの現在のステートの取り込み先となるステート ブロックを識別する。

アプリケーションで記録済みのステート ブロックを更新して若干異なるステート設定を含める場合には、Direct3DDevice7.CaptureStateBlock メソッドが特に便利である。これを行うには、既存のステート ブロックを適用し、必要な設定変更を行い、システムのステートをステート ブロックに取り込む。これについて、次のコード例で示す。

' MyBlock 変数には、以前に記録されたデバイス ステート セットへの
' ハンドルが格納されている。

' 現在のステート ブロックを設定する。
Call d3dDevice.ApplyStateBlock(MyBlock)

' 必要に応じてデバイス ステートを変更する。
.
.
.

' 修正したデバイス ステート データを既存のブロックに取り込む。
Call d3dDevice.CaptureStateBlock(MyBlock)
 

CaptureStateBlock メソッドは、デバイスのステート全体を取り込むのではなく、ステート ブロック内の既存のステート値を更新するのみである。たとえば、次のコード例で表す 2 つの処理が記録されたステート ブロックがあるとする。

Call SetRenderState(D3DRENDERSTATE_SHADEMODE, D3DSHADE_GOURAUD)
Call SetTexture(0, d3dAnyTexture)
 

ステート ブロックが初めに記録されて以降、2 つの設定のいずれかを変更した場合、Direct3DDevice7.CaptureStateBlock メソッドは、ブロック内で変更されたステートのみ新しい値に更新する。