Platform SDK: DirectX |
IDirect3DDevice7::CreateStateBlock メソッドは、デバイス ステート セットの全体を含むか、あるいは頂点またはピクセル処理に関するデバイス ステートのみ含む新しいステート ブロックを作成する。CreateStateBlock メソッドは 2 つのパラメータを受け取る。第 1 パラメータは、新しいステート ブロックに取り込むステート情報の種類を識別する。第 2 パラメータは、呼び出しが成功したときに有効なステート ブロック ハンドルを受け取る変数のアドレスである。
第 1 パラメータの有効値は、D3DSTATEBLOCKTYPE 列挙型で定義される。これに含まれるメンバを使用して、デバイス ステート セットの全体 (D3DSBT_ALL)、あるいは点またはピクセル処理 (D3DSBT_VERTEX または D3DSBT_PIXEL) に関するステートのみ取り込むことができる。次の一覧は、D3DSBT_VERTEX または D3DSBT_PIXEL 値を渡したときにシステムによって取り込まれるステートを示す。
すべてのライティングのステート (有効または無効)
トランスフォーム行例
ユーザー定義クリップ面
D3DRENDERSTATE_AMBIENTMATERIALSOURCE
D3DRENDERSTATE_CLIPPLANEENABLE
D3DRENDERSTATE_DIFFUSEMATERIALSOURCE
D3DRENDERSTATE_EMISSIVEMATERIALSOURCE
D3DRENDERSTATE_NORMALIZENORMALS
D3DRENDERSTATE_ALPHATESTENABLE
D3DRENDERSTATE_COLORKEYBLENDENABLE
D3DRENDERSTATE_STENCILWRITEMASK
D3DRENDERSTATE_TEXTUREPERSPECTIVE
Direct3DDevice7.CreateStateBlock メソッドは、デバイス ステート セットの全体を含むか、または頂点またはピクセル処理に関するデバイス ステートのみ含む新しいステート ブロックを作成する。CreateStateBlock メソッドは 2 つのパラメータを受け取る。第 1 パラメータは、新しいステート ブロックに取り込むステート情報の種類を識別する。第 2 パラメータは、呼び出しが成功したときに有効なステート ブロック ハンドルを受け取る変数のアドレスである。
第 1 パラメータの有効値は、CONST_D3DSTATEBLOCKTYPE 列挙で定義される。この列挙に含まれるメンバを使用して、デバイス ステート セットの全体 (D3DSBT_ALL)、あるいは点またはピクセル処理 (D3DSBT_VERTEX または D3DSBT_PIXEL) に関するステートのみ取り込むことができる。次の一覧は、D3DSBT_VERTEX または D3DSBT_PIXEL 値を渡したときにシステムによって取り込まれるステートを示す。
すべてのライティングのステート (有効または無効)
トランスフォーム行例
ユーザー定義クリップ面
D3DRENDERSTATE_AMBIENTMATERIALSOURCE
D3DRENDERSTATE_CLIPPLANEENABLE
D3DRENDERSTATE_DIFFUSEMATERIALSOURCE
D3DRENDERSTATE_EMISSIVEMATERIALSOURCE
D3DRENDERSTATE_NORMALIZENORMALS
D3DRENDERSTATE_ALPHATESTENABLE
D3DRENDERSTATE_COLORKEYBLENDENABLE
D3DRENDERSTATE_STENCILWRITEMASK
D3DRENDERSTATE_TEXTUREPERSPECTIVE
注 : CreateStateBlock メソッドが返すエラー コードをチェックすることが大切である。このメソッドが失敗した場合、その原因の多くはディスプレイ モードが変更されたことである考えられる (エラー コード DDERR_SURFACELOST)。アプリケーションのサーフェスを作成し直してステート ブロックを記録することで、このような障害からアプリケーションが回復するように設計する。