Platform SDK: DirectX

テクスチャ座標の自動生成の構成

[C++]

C++ の場合、(D3DTEXTURESTAGESTATETYPE 列挙型からの) D3DTSS_TEXCOORDINDEX テクスチャ ステージ ステートを使用して、テクスチャ座標の生成方法を制御する。

[Visual Basic]

Visual Basic の場合、(CONST_D3DTEXTURESTAGESTATETYPE 列挙からの) D3DTSS_TEXCOORDINDEX テクスチャ ステージ ステートを使用して、テクスチャ座標の生成方法を制御する。

通常、このステートは、頂点フォーマットで符号化された特定のテクスチャ座標セットを使用するようシステムに知らせる。このステートに割り当てる値の中に、D3DTSS_TCI_CAMERASPACENORMAL、D3DTSS_TCI_CAMERASPACEPOSITION、または D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR フラグを含めた場合、システムで実行される処理は大きく異なってくる。これらのフラグのいずれかでも存在しているとき、テクスチャ ステージは頂点フォーマットのテクスチャ座標を無視し、システムが生成する座標を優先する。各フラグの意味は、次のとおりである。

D3DTSS_TCI_CAMERASPACENORMAL
頂点法線を入力テクスチャ座標として使用する。頂点法線はカメラ空間にトランスフォームされる。
D3DTSS_TCI_CAMERASPACEPOSITION
頂点位置座標を入力テクスチャ座標として使用する。頂点位置座標がカメラ空間にトランスフォームされる。
D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR
反射ベクトルを入力テクスチャ座標として使用する。反射ベクトルがカメラ空間にトランスフォームされる。反射ベクトルは、入力頂点位置座標と法線ベクトルから計算される。

これらのフラグは互いに排他的であるため、組み合わせて使用することはできない。これらのフラグのいずれかを使用する場合は、テクスチャ ラッピング モードを決定するためにシステムで使用するインデックス値を指定できる。

[C++]

次のコードは、C++ でのこれらのフラグの使用方法を示す。

// この例では、lpd3dDevice 変数は IDirect3DDevice7 インターフェイスへの
// 有効なポインタである。

// このテクスチャ ステージの入力テクスチャ座標として
// 頂点位置座標 (カメラ空間) を使用し、
// D3DRENDERSTATE_WRAP1 レンダリング ステートのラップ モード セットを使用する。
lpd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 
D3DTSS_TCI_CAMERASPACEPOSITION | 1 );
[Visual Basic]

次のコードは、Visual Basic でのこれらのフラグの使用方法を示す。

' この例では、d3dDevice 変数は Direct3DDevice7 オブジェクトへの
' 有効な参照である。

' このテクスチャ ステージの入力テクスチャ座標として
' 頂点位置座標 (カメラ空間) を使用し、
' D3DRENDERSTATE_WRAP1 レンダリング ステートのラップ モード セットを使用する。
Call d3dDevice.SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, _
D3DTSS_TCI_CAMERASPACEPOSITION Or 1)

 :  自動生成されたテクスチャ座標は、テクスチャ座標トランスフォームの入力値として非常に便利であり、またキューブ環境マップの 3 要素ベクトルを計算する必要がないという点でも便利である。

参照

テクスチャ座標トランスフォームキューブ環境マップ