Share via


D3DFVF

彈性頂點格式常數或 FVF 程式碼是用來描述在單一資料流程中交錯的頂點內容,該資料流程將由固定函式管線處理。

頂點資料旗標

下列旗標描述頂點格式。 如需頂點格式的相關資訊,請參閱 固定函式 FVF 程式碼 (Direct3D 9)

#define 描述 資料順序和類型
D3DFVF_DIFFUSE 頂點格式包含擴散色彩元件。 以 ARGB 順序排列的 DWORD。 請參閱 D3DCOLOR_ARGB
D3DFVF_NORMAL 頂點格式包含頂點一般向量。 此旗標不能與 D3DFVF_XYZRHW 旗標搭配使用。 float、float、float
D3DFVF_PSIZE 以點大小指定的頂點格式。 此大小是以未轉換和光線的頂點相機空間單位表示,並以已轉換頂點的裝置空間單位表示。 FLOAT
D3DFVF_SPECULAR 頂點格式包含反射色彩元件。 以 ARGB 順序排列的 DWORD。 請參閱 D3DCOLOR_ARGB
D3DFVF_XYZ 頂點格式包含未轉換頂點的位置。 此旗標不能與 D3DFVF_XYZRHW 旗標搭配使用。 float、float、float。
D3DFVF_XYZRHW 頂點格式包含已轉換頂點的位置。 此旗標不能與D3DFVF_XYZ或D3DFVF_NORMAL旗標搭配使用。 float、float、float、float、 float。
透過D3DFVF_XYZB5 D3DFVF_XYZB1 頂點格式包含位置資料,以及對應數目的加權 (Beta) 值,用於多矩陣頂點混合作業。 目前,Direct3D 可以混合最多三個加權值和四個混合矩陣。 如需使用混合矩陣的詳細資訊,請參閱 索引頂點混合 (Direct3D 9) 1、2 或 3 個浮點數。 使用D3DFVF_LASTBETA_UBYTE4時,最後一個混合權數會視為 DWORD。
D3DFVF_XYZW 頂點格式包含已轉換和裁剪 (x、y、z、w) 資料。 ProcessVertices 不會叫用剪輯程式,而是將資料輸出到剪輯座標中。 這個常數是專為可程式化頂點管線所設計,而且只能搭配使用。 float、float、float、float

 

紋理旗標

下列旗標描述固定函式管線所使用的紋理旗標。

#define 描述
D3DFVF_TEX0 - D3DFVF_TEX8 這個頂點的紋理座標集數目。 這些旗標的實際值不是循序的。
D3DFVF_TEXCOORDSIZEN (coordIndex) 定義紋理座標資料集。 n 表示紋理座標的維度。 coordIndex 表示紋理座標索引編號。 請參閱D3DFVF_TEXCOORDSIZEN和紋理座標和紋理階段

 

遮罩旗標

下列旗標描述固定函式管線所使用的遮罩旗標。

#define 描述
D3DFVF_POSITION_MASK 位置位的遮罩。
D3DFVF_RESERVED0、D3DFVF_RESERVED2 遮罩 FVF 中保留位的值。 請勿使用。
D3DFVF_TEXCOUNT_MASK 紋理旗標位的遮罩值。

 

其他旗標

下列旗標描述固定函式管線所使用的各種旗標。

#define 描述
D3DFVF_LASTBETA_D3DCOLOR 頂點位置資料中的最後一個 Beta 欄位會是 D3DCOLOR 類型。 Beta 欄位中的資料會與矩陣調色盤搭配使用,以指定矩陣索引。
D3DFVF_LASTBETA_UBYTE4 頂點位置資料中的最後一個 Beta 欄位會是 UBYTE4 類型。 Beta 欄位中的資料會與矩陣調色盤搭配使用,以指定矩陣索引。
// Given the following vertex data definition: 
struct VERTEXPOSITION
{
   float pos[3];
   union 
   {
      float beta[5];
      struct
      {
         float weights[4];
         DWORD MatrixIndices;  // Used as UBYTEs
      }
   }
};

假設 FVF 宣告為:D3DFVF_XYZB5 |D3DFVF_LASTBETA_UBYTE4。 Weight 和 MatrixIndices 包含在 Beta[5]中,其中D3DFVF_LASTBETA_UBYTE4表示將 Beta[5] 中的最後一個 DWORD 解譯為類型 UBYTE4。

D3DFVF_TEXCOUNT_SHIFT 要移動整數值的位數,以識別頂點的紋理座標數目。 此值可能會使用,如下所示。

DWORD dwNumTextures = 1;頂點只有一組座標。

將建立 // 彈性頂點格式的值移 (FVF) 組合時使用的值。 dwFVF = dwNumTextures << D3DFVF_TEXCOUNT_SHIFT;

// Now, create an FVF combination using the shifted value.

 

範例

下列範例顯示其他常見的旗標組合。

// Untransformed vertex for lit, untextured, Gouraud-shaded content.
dwFVF = ( D3DFVF_XYZ | D3DFVF_DIFFUSE );
// Untransformed vertex for unlit, untextured, Gouraud-shaded 
//   content with diffuse material color specified per vertex.
dwFVF = ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE );
// Untransformed vertex for light-map-based lighting.
dwFVF = ( D3DFVF_XYZ | D3DFVF_TEX2 );
// Transformed vertex for light-map-based lighting with shared rhw.
dwFVF = ( D3DFVF_XYZRHW | D3DFVF_TEX2 );
// Heavyweight vertex for unlit, colored content with two 
//   sets of texture coordinates.
dwFVF = ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | 
          D3DFVF_SPECULAR | D3DFVF_TEX2 );

常數資訊

需求
標頭 d3d9types.h
最低作業系統 Windows 98

 

Direct3D 常數

固定函式 FVF 程式碼 (Direct3D 9)

Geometry Blending (Direct3D 9)