テクスチャ ステージの処理

ドライバーは、D3DDP2OP_TEXTURESTAGESTATE 操作コードと、コマンド ストリームに続く D3DHAL_DP2TEXTURESTAGESTATE 構造体を使用して、テクスチャ ステージの状態への変更を処理します。 ドライバーが操作コードを処理する方法については、「コマンド ストリーム」を参照してください。

たとえば、操作コードが D3DDP2OP_TEXTURESTAGESTATE で、D3DHAL_DP2COMMAND 構造体の wStateCount メンバーの値が 7 の場合、次の D3DHAL_DP2COMMAND 命令に到達する前に 7 つの D3DHAL_DP2TEXTURESTAGESTATE 構造体が続きます。 各 D3DHAL_DP2TEXTURESTAGESTATE 構造体には、テクスチャ ブレンド パイプラインのどのステージにテクスチャ状態の変更が必要であるかを指定する dwStage メンバーが含まれています。 同じ構造体の TSState メンバーは、D3DTEXTURESTAGESTATETYPE 列挙型の状態を指定し、D3DHAL_DP2TEXTURESTAGESTATE 構造体の dwValue メンバーには、指定した状態を設定する必要がある値が含まれています。

このプロセスは、すべてのレンダリング状態、またはその他の種類の命令で同じです。 D3DHAL_DP2COMMAND 構造体の bCommand メンバーが D3DDP2OP_RENDERSTATE である場合、後続の構造体は D3DHAL_DP2RENDERSTATE 構造体であり、その構造体内の情報を使用して、それに応じてレンダリング状態を設定します。

個々のブール値のレンダリング状態を使用して座標を制御するのではなく、各レンダリング状態値は、D3DWRAP_U フラグと D3DWRAP_V フラグ (d3dtypes.h で定義) で構成されるフラグのセットです。 この変更は、より高次元のテクスチャとの互換性のために行われました。

複数のテクスチャの実装に関するその他の有用な情報については、DirectX SDK ドキュメントの「ブレンド式」、「テクスチャごとの状態のセマンティクス」、「色操作」、「アルファ操作」のセクションを参照してください。 DirectX 6.0 以降のバージョンで有効になっているテクスチャ ステージ状態の種類の詳細については、D3DTEXTUREOP および D3DTEXTUREFILTERTYPE 列挙型を参照してください。

DirectX 9.0 以降のアプリケーションでは、D3DSAMPLERSTATETYPE 列挙の値を使用して、サンプラー テクスチャ関連のレンダリング状態の特性を制御できます。 DirectX 8.0 以前では、これらのサンプラー状態は D3DTEXTURESTAGESTATETYPE 列挙に含まれていました。 ランタイムは、ユーザー モード サンプラー状態 (D3DSAMP_Xxx) をカーネル モード D3DTSS_Xxx 値にマップして、ドライバーがユーザー モード サンプラー状態を処理する必要がないようにします。 D3DSAMPLERSTATETYPE の詳細については、最新の DirectX SDK ドキュメントを参照してください。