共用方式為


紋理座標格式 (Direct3D 9)

Direct3D 中的紋理座標可以包含一、二、三或四個浮點元素,以解決不同維度層級的紋理。 1D 紋理 - 紋理表面,維度為 1-by-n 紋素 - 由一個紋理座標尋址。 最常見的案例是 2D 紋理,會以兩個通常稱為您和 v 的紋理座標來尋址。 Direct3D 支援兩種類型的 3D 紋理、立方環境地圖和磁碟區紋理。 立方環境對應不是真正的 3D,但它們會以 3 元素向量來尋址。 如需詳細資訊,請參閱 立方環境對應 (Direct3D 9)

固定函式 FVF 代碼 (Direct3D 9)中所述,應用程式會以頂點格式編碼紋理座標。 頂點格式可以包含多個紋理座標集。 使用D3DFVF_TEX0透過 D3DFVF_TEX8 D3DFVF 來描述不包含紋理座標的頂點格式,或多達八組。

每個紋理座標集可以有一到四個元素。 透過 D3DFVF_TEXTUREFORMAT4 旗標D3DFVF_TEXTUREFORMAT1描述集合中紋理座標的元素數目,但這些旗標本身不會使用。 相反地,D3DFVF_TEXCOORDSIZEN 組巨集會使用這些旗標來建立位模式,以描述頂點格式中一組特定紋理座標所使用的元素數目。 這些巨集會接受單一參數,以識別所定義元素數目之座標集的索引。 下列範例說明如何使用這些巨集。

// This vertex format contains two sets of texture coordinates.
// The first set (index 0) has 2 elements, and the second set 
// has 1 element. The description for this vertex format would be: 
//     dwFVF = D3DFVF_XYZ  | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX2 |
//             D3DFVF_TEXCOORDSIZE2(0) | D3DFVF_TEXCOORDSIZE1(1); 
//
typedef struct CVF
{
    D3DVECTOR position;
    D3DVECTOR normal;
    D3DCOLOR  diffuse;
    float     u, v;   // 1st set, 2D
    float     t;      // 2nd set, 1D
} CustomVertexFormat;

注意

除了立方環境地圖和磁碟區紋理之外,轉譯器無法使用兩個以上的元素來尋址紋理。 應用程式最多可為紋理座標提供三個元素,但只有在紋理是立方體地圖、磁碟區紋理或D3DTTFF_PROJECTED紋理轉換旗標時才使用。 D3DTTFF_PROJECTED旗標會導致轉譯器將前兩個專案除以第三個 (或 n) 元素。 如需詳細資訊,請參閱 紋理座標轉換 (Direct3D 9)

 

紋理座標