Microsoft DirectX 8.0 (C++) |
C++ の場合、(D3DTEXTURESTAGESTATETYPE 列挙型からの) D3DTSS_TEXCOORDINDEX テクスチャ ステージ ステートを使用して、テクスチャ座標の生成方法を制御する。
通常、このステートは、頂点フォーマットで符号化された特定のテクスチャ座標セットを使用するようシステムに知らせる。このステートに割り当てる値の中に、D3DTSS_TCI_CAMERASPACENORMAL、D3DTSS_TCI_CAMERASPACEPOSITION、または D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR フラグを含めた場合、システムで実行される処理は大きく異なってくる。これらのフラグのいずれかでも存在しているとき、テクスチャ ステージは頂点フォーマットのテクスチャ座標を無視し、システムが生成する座標を優先する。各フラグの意味は、次のとおりである。
これらのフラグは互いに排他的である。これらのフラグのいずれかを使用する場合は、テクスチャ ラッピング モードを決定するためにシステムで使用するインデックス値を指定できる。
次のコードは、C++ でのこれらのフラグの使用方法を示している。
/* * このコードでは、変数 d3dDevice は、IDirect3DDevice8 インターフェイスへの * 有効なポインタであると仮定している。 * * このテクスチャ ステージの入力テクスチャ座標として * 頂点位置座標 (カメラ空間) を使用し、 * D3DRENDERSTATE_WRAP1 レンダリング ステートのラップ モード セットを使用する。 */ d3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION | 1 );
注 自動生成されたテクスチャ座標は、テクスチャ座標トランスフォームの入力値として非常に便利であり、またキューブ環境マップの 3 要素ベクトルを計算する必要がないという点でも便利である。