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