D3DFVF

灵活的顶点格式常量或 FVF 代码用于描述在将由固定函数管道处理的单个数据流中交错的顶点的内容。

顶点数据标志

以下标志描述顶点格式。 有关顶点格式的信息,请参阅 固定函数 FVF 代码(Direct3D 9)

#define 描述 数据顺序和类型
D3DFVF_DIFFUSE 顶点格式包括漫射颜色组件。 DWORD 按 ARGB 顺序排列。 请参阅 D3DCOLOR_ARGB
D3DFVF_NORMAL 顶点格式包括顶点法向量。 此标志不能与D3DFVF_XYZRHW标志一起使用。 float、float、float
D3DFVF_PSIZE 以点大小指定的顶点格式。 此大小以未转换和点亮的顶点的相机空间单位表示,以及用于转换和点亮顶点的设备空间单位。
D3DFVF_SPECULAR 顶点格式包括反射颜色组件。 DWORD 按 ARGB 顺序排列。 请参阅 D3DCOLOR_ARGB
D3DFVF_XYZ 顶点格式包括未转换顶点的位置。 此标志不能与D3DFVF_XYZRHW标志一起使用。 float、float、float。
D3DFVF_XYZRHW 顶点格式包括已转换顶点的位置。 此标志不能与D3DFVF_XYZ或D3DFVF_NORMAL标志一起使用。 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)

几何混合(Direct3D 9)