Microsoft DirectX 8.0 (Visual Basic)

ステート ブロックの記録

Direct3DDevice8 オブジェクトには、アプリケーションからデバイス ステートの要求があったときにそのデバイス ステートをステート ブロックに記録する Direct3DDevice8.BeginStateBlock メソッドがある。BeginStateBlock メソッドは、デバイス ステートの変更をデバイスに適用するのではなく、デバイス ステートの変更をステート ブロックに記録し始める。BeginStateBlock を呼び出した後、次のメソッドの呼び出しはすべてデバイス ステート ブロックに記録される。

ステート ブロックの記録が終了したら、Direct3DDevice8.EndStateBlock メソッドを呼び出して記録の停止をシステムに知らせる。EndStateBlock メソッドは、ステート ブロックのハンドルをメソッドの戻り値に格納する。アプリケーションでは、このハンドルを使用して、必要に応じてステート ブロックをデバイスに適用したり、新しいステート データをブロックに記録したり、不要になったステート ブロックを削除することができる。

パフォーマンスに関する注意  最良の結果を得るためには、BeginStateBlock および EndStateBlock のペア間でのすべてのステート変更をグループ化する。

EndStateBlock メソッドが返すエラー コードをチェックすることが大切である。このメソッドが失敗した場合、その原因の多くはディスプレイ モードが変更されたことであると考えられる。アプリケーションのサーフェスを作成し直し、再度ステート ブロックを記録することで、このような障害からアプリケーションが回復するように設計する。