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 メソッドは、ブロック内で変更されたステートのみ新しい値に更新する。