灵活顶点格式(Flexible Vertex Format, FVF)用来描述在顶点缓冲区中的顶点存储格式中包含了哪些属性。Direct3D应用程序可以用几种不同的方式定义灵活顶点格式。灵活顶点格式使应用程序只使用它需要的顶点数据,排除那些它不需要的组成成分。这样,应用程序可以节省内存空间,减少系统带宽。通过D3DFVF的组合,可以描述图元顶点的格式。灵活顶点格式指定的格式包括点的大小,用D3DFVF_PSIZE指定,该大小在投影机空间用来表示未经变换的顶点,在设备空间用来表示经过变换的顶点。
接口IDirect3DDevice9的渲染方法能够接受这些标志的组合,并用它们来决定如何渲染图元。这些标志告诉系统应用程序所使用的顶点的组成,包括顶点的位置、顶点混合权重、法向量、颜色和纹理坐标的格式和数量,以及向Direct3D申请何种渲染流水线。另外,提交或撤销一个具体的顶点格式标志会告诉系统哪些顶点组成单元还留在系统中,哪些已经被忽略了。
定义顶点格式:
struct CustomerVertex
{
FLOAT x,y,z,rhw;
DWORD color;
};
注: RHW表示投影空间中顶点所在的齐次点(x,y,z,w)(homogeneous point)的w坐标的导数(reciprocal), 更详细说明请看:http://www.cnblogs.com/xmzyl/articles/1604150.html
还需要定义一个宏,来向D3D说明一下,指定定义的顶点格式有哪些。
#define D3DFVF_CUSTOMVERTEX(D