紋理座標格式 (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) 。
相關主題