其实这就是一个我们自己声明定义的一个结构,在其中,我们进行图元顶点的存储,我们在程序中用它来记录一切顶点的属性,但
DX本身对它有一定的限制,那就是限制我们在设计其属性时各类型参数的顺序。在这个FVF中,我们可以设置顶点的:
1:位置x,y,z坐标 2:RHW(已转化的顶点,齐次W倒数) 3:混合加权值 4:顶点的法线 5:扩散的颜色(漫射属性) 6:反射颜色(镜面反射属性) 7:纹理坐标集(UV坐标)等
为创建自由顶点格式,我们首先需要创建一个包含了我们所期望的具有顶点格式的数据结构点,第一个包含位置和颜色属性,第二个包含位置,法线,和纹理坐标
struct ColorVertex
{
float x,y,z; //position
DWORD clr; //color
};
struct NormalTexVertex
{
float x,y,z; //position
float nx,ny,nz; //normal vector
float u,v; //texture coordinate
};
顶点结构定义好之后,就需要用灵活顶点格式(FVF)标记来描述顶点的结构,以上顶点格式可描述为:
#define FVF_COLOR(D3DFVF_XYZ | D3DFVF_DIFFUSE)
#define FVF_NORMAL_TEX(D3DFVF_XYZ | D3DFVF_NORMAL |D3DFVF_TEX1)
我们可以根据不同的需要来选择部分的属性进