Microsoft DirectX 8.0 (Visual Basic)

ステート ブロックの取得

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

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

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

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

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

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

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

Call d3dDevice.SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD)
Call d3dDevice.SetTexture(0, Texture)

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