自動生成されたテクスチャ座標 (Direct3D 9)
システムは、変換されたカメラ空間位置または頂点からの法線をテクスチャ座標として使用することも、3 次環境マップのアドレス指定に使用される 3 つの要素ベクトルを計算することもできます。 頂点で明示的に指定したテクスチャ座標と同様に、自動的に生成されたテクスチャ座標をテクスチャ座標変換の入力として使用できます。
自動的に生成されたテクスチャ座標は、頂点形式で明示的なテクスチャ座標を使用する必要がなくなるため、ジオメトリ データに必要な帯域幅を大幅に削減できます。 多くの場合、システムによって生成されるテクスチャ座標を変換と共に使用して特殊効果を生成できます。 もちろん、これは特殊な用途の機能であり、多くの場合、明示的なテクスチャ座標を使用します。
自動生成されたテクスチャ座標の設定
C++ では、(D3DTEXTURESTAGESTATETYPE 列挙型からの) D3DTSS_TEXCOORDINDEXテクスチャ ステージの状態によって、システムがテクスチャ座標を生成する方法が制御されます。
通常、この状態は、頂点形式でエンコードされたテクスチャ座標の特定のセットを使用するようにシステムに指示します。 この状態に割り当てる値にD3DTSS_TCI_CAMERASPACENORMAL、D3DTSS_TCI_CAMERASPACEPOSITION、またはD3DTSS_TCI_CAMERASPACEREFLECTIONVECTORフラグを含めると、システムの動作はまったく異なります。 これらのフラグのいずれかが存在する場合、テクスチャ ステージは、システムによって生成される座標を優先して、頂点形式内のテクスチャ座標を無視します。 各フラグの意味を次の一覧に示します。
D3DTSS_TCI_CAMERASPACENORMAL
入力テクスチャ座標として、カメラ空間に変換された頂点法線を使用します。
D3DTSS_TCI_CAMERASPACEPOSITION
カメラ空間に変換された頂点位置を入力テクスチャ座標として使用します。
D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR
入力テクスチャ座標として、カメラ空間に変換された反射ベクトルを使用します。 反射ベクトルは、入力頂点の位置と法線ベクトルから計算されます。
テクスチャ座標インデックス フラグは相互に排他的です。 この例では、次を使用します。
- このテクスチャ ステージの入力テクスチャ座標としての頂点の位置 (カメラ空間内)
- D3DRENDERSTATE_WRAP1レンダー状態で設定されたラップ モード
// Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface
d3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX,
D3DTSS_TCI_CAMERASPACEPOSITION | 1);
自動的に生成されるテクスチャ座標は、テクスチャ座標変換の入力値として最も役立ちます。また、アプリケーションが 3 次環境マップの 3 要素ベクトルを計算する必要がなくなります。
Sphere マッピングでは、クロム球によって反映された環境全体を含む事前計算済み (モデル時) テクスチャ マップが使用されます。 Direct3D には、レンダーステート D3DTSS_TCI_CAMERASPACENORMALを使用したテクスチャ座標生成機能があります。この機能は、カメラ空間内の頂点の法線を受け取り、テクスチャ変換を介してテクスチャ座標を生成します。
関連トピック
-
テクスチャ座標処理 の