Microsoft DirectX 8.0 (C++) |
Microsoft® Direct3D® では、テクスチャ ステージという概念を用いてマルチ テクスチャ ブレンディングをサポートする。テクスチャ ステージごとに、テクスチャとそのテクスチャで実行可能な処理がある。テクスチャ ステージのテクスチャは、カレント テクスチャの集まりを形成する。詳細については、「マルチ テクスチャ ブレンディング」を参照すること。各テクスチャのステートは、そのテクスチャ ステージにカプセル化される。
C++ アプリケーションでは、各テクスチャのステートは IDirect3DDevice8::SetTextureStageState メソッドで設定する必要がある。第 1 パラメータの値としてステージ番号 (0 〜 7) を渡す。第 2 パラメータの値には、D3DTEXTURESTAGESTATETYPE 列挙型のメンバを設定する。最後のパラメータは、特定のテクスチャ ステートについてのステート値である。
テクスチャ インターフェイス ポインタを使用して、最大 8 つのテクスチャのブレンドをレンダリングできる。IDirect3DDevice8::SetTexture メソッドを呼び出してカレント テクスチャを設定する。Direct3D は、レンダリングするプリミティブに対して、カレント テクスチャをすべてブレンドする。
注 SetTexture メソッドは、割り当てられるテクスチャ サーフェスの参照カウントをインクリメントする。テクスチャが不要になった場合、該当するステージのテクスチャを NULL に設定する必要がある。これを行わないと、サーフェスが解放されずメモリ リークが発生する。
IDirect3DDevice8::SetRenderState メソッドを呼び出して、カレント テクスチャのテクスチャ ラッピング ステートを設定できる。第 1 パラメータの値として、D3DRS_WRAP0 〜 D3DRR_WRAP7 から値を 1 つ渡す。また、D3DWRAPCOORD_0、D3DWRAPCOORD_1、D3DWRAPCOORD_2、および D3DWRAPCOORD_3 フラグの組み合わせを使用して、u、v、または w 方向のラッピングを有効にする。
また、テクスチャ パースペクティブ ステートとテクスチャ フィルタリング ステートを設定することもできる。「テクスチャ フィルタリング」および「テクスチャ フィルタリング ステート」を参照すること。