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 顶点格式包含位置数据,以及用于多matrix 顶点混合操作的相应权重 (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)