Microsoft DirectX 8.0 (Visual Basic)

テクスチャ座標フォーマット

Microsoft® Direct3D® のテクスチャ座標には、1、2、3、または 4 つの浮動小数点要素を含めて、さまざまな大きさのテクスチャを処理できる。1D テクスチャ (大きさが 1 x n のテクスチャ サーフェス) の場合は、1 つのテクスチャ座標で処理される。最も一般的な 2D テクスチャの場合は、通常 u と v と呼ばれる 2 つのテクスチャ座標によって処理される。Direct3D では、キューブ環境マップという 3D テクスチャを 1 種類のみサポートしている。キューブ環境マップは、実際には 3D ではないが、3 要素ベクトルによって処理される。詳細については、「キューブ環境マップ」を参照すること。

頂点フォーマットについて」で説明するように、アプリケーションでは頂点フォーマット内のテクスチャ座標をエンコードする。頂点フォーマットにはテクスチャ座標の複数のセットを含めることができる。D3DFVF_TEX0 〜 D3DFVF_TEX8 柔軟な頂点フォーマット フラグを使用して、テクスチャ座標を含めないか、最大 8 つのセットまで含めることを指定する。

各テクスチャ座標セットには、1 〜4 つの要素を含めることができる。この SDK 付属の Math.bas ソース ファイルにあるヘルパー関数 D3DFVF_TEXCOORDSIZEn セットを使用して、頂点フォーマットのテクスチャ座標セットで使用される要素の個数を記述するビット パターンを作成する。これらのマクロは、要素数を定義する座標セットのインデックスを識別するパラメータを 1 つ受け取る。次の図は、これらのマクロの使用方法を示している。

Private Sub Form_Load()
' この頂点フォーマットには、2 つのテクスチャ座標セットが含まれている。
' 1 つ目のセット (インデックス 0) には 2 つの要素があり、2 つ目のセットには
' 1 つの要素がある。
'
' この頂点フォーマットは次のように記述される。
'     lFVF = D3DFVF_XYZ Or D3DFVF_NORMAL Or D3DFVF_DIFFUSE Or D3DFVF_TEX2 Or _
'            D3DFVF_TEXCOORDSIZE2(0) Or D3DFVF_TEXCOORDSIZE1(1)
Type CustomVertexFormat
    position As D3DVECTOR
    normal As D3DVECTOR
    diffuse  As D3DVECTOR
    ' 1 つ目のセット、2D
    u As Single
    v As Single
    ' 2 つ目のセット、1D
    t As Single
End Type

  キューブ環境マップを除き、ラスタライザでは 3 つ以上の要素を使用してテクスチャを処理することはできない。アプリケーションではテクスチャ座標に最大 3 つまで要素を指定できるが、これが可能なのは、テクスチャがキューブ マップの場合か、D3DTTFF_PROJECTED テクスチャ トランスフォーム フラグが使用されている場合のみである。D3DTTFF_PROJECTED フラグが使用されている場合、ラスタライザは最初の 2 つの要素を 3 つ目 (または n つ目) の要素で除算する。詳細については、「テクスチャ座標トランスフォーム」を参照すること。