Microsoft DirectX 8.0 (C++)

テクスチャ座標トランスフォームを有効にする

D3DTSS_TEXTURETRANSFORMFLAGS テクスチャ ステージ ステートは、テクスチャ座標トランスフォームの適用を制御する。このテクスチャ ステージ ステートの値は、D3DTEXTURETRANSFORMFLAGS 列挙型で定義される。

D3DTSS_TEXTURETRANSFORMFLAGS が D3DTTFF_DISABLE (デフォルト値) に設定されているときは、テクスチャ座標トランスフォームは無効である。テクスチャ座標トランスフォームがステージ 0 に対して有効な場合、次のコードはこれを無効にする。

// この例では、変数 d3dDevice には
// IDirect3DDevice8 インターフェイスへの有効なポインタが格納されている。

D3dDevice->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE );

D3DTEXTURETRANSFORMFLAGS に定義されているその他の値は、テクスチャ座標トランスフォームを有効にするため、また、結果として生成されるテクスチャ座標の要素のうち、ラスタライザに渡す個数を制御するために使用する。例として次のコードを考える。

// この例では、変数 d3dDevice には
// IDirect3DDevice8 インターフェイスへの有効なポインタが格納されている。

D3dDevice->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 );

D3DTTFF_COUNT2 値は、テクスチャ ステージ 0 用のトランスフォーム行列セットを適用し、トランスフォーム後のテクスチャ座標の最初の 2 つの要素をラスタライザに渡すようシステムに指示する。

D3DTTFF_PROJECTED テクスチャ トランスフォーム フラグは、射影されるテクスチャの座標を示す。このフラグが指定されている場合、ラスタライザはトランスフォーム対象の要素を最後の要素で除算する。例として次のコードを考える。

// この例では、変数 d3dDevice には
// IDirect3DDevice8 インターフェイスへの有効なポインタが格納されている。

d3dDevice->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS, 
                                   D3DTTFF_COUNT3 | D3DTTFF_PROJECTED );

この例では、3 つのテクスチャ座標要素をラスタライザに渡すようにシステムに知らせる。ラスタライザでは、最初の 2 つの要素を 3 つ目の要素で除算して、テクスチャの処理に必要な 2D テクスチャ座標を生成する。