Microsoft DirectX 8.0 (C++)

事前定義するステート ブロックの作成

IDirect3DDevice8::CreateStateBlock メソッドは、デバイス ステート セットの全体を含むか、あるいは頂点またはピクセル処理に関するデバイス ステートのみ含む新しいステート ブロックを作成する。CreateStateBlock メソッドは 2 つのパラメータを受け取る。第 1 パラメータは、新しいステート ブロックに取り込むステート情報の種類を識別する。第 2 パラメータは、呼び出しが成功したときに有効なステートブロック ハンドルを受け取る変数のアドレスである。

第 1 パラメータの有効値は、D3DSTATEBLOCKTYPE 列挙型で定義される。これに含まれるメンバを使用して、デバイス ステート セットの全体 (D3DSBT_ALL)、あるいは点またはピクセル処理 (D3DSBT_VERTEXSTATE または D3DSBT_PIXELSTATE) に関するステートのみ取り込むことができる。次の一覧は、D3DSBT_VERTEXSTATE または D3DSBT_PIXELSTATE 値を渡したときにシステムによって取り込まれるステートを示している。

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