次の方法で共有


自動生成されたテクスチャ座標 (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 要素ベクトルを計算する必要がなくなります。

球体マッピングでは、クロム球によって反映される環境全体を含む事前計算済み (モデル時) テクスチャ マップが使用されます。 Direct3D には、レンダー状態D3DTSS_TCI_CAMERASPACENORMALを使用したテクスチャ座標生成機能があります。これは、カメラ空間内の頂点の法線を受け取り、テクスチャ変換を通じてテクスチャ座標を生成します。

テクスチャ座標処理

テクスチャ座標変換 (Direct3D 9)

立方環境マッピング (Direct3D 9)