场景是物体挥着模型的集合,任何的物体我们都可以使用三角网格来逼近的表示,三角网格是构成物体的模型的基本单元。我们通常使用下面的术语来描述网格中的三角形:多边形、图元、网格几何元。
一个多边形中相邻两边的交汇点称之为顶点,描述三角形单元的时候,我们需要指定三角单元的顶点,描述物体的时候,我们应该指定三角单元的列表。
顶点格式
刚才对于顶点的描述是几何学的,但是在Direct3D中,刚才的描述可能不是很完整,因为在Direct3D中,顶点出了位置信息之外可能还包括颜色属性,法线属性等,Direct3D中允许我们自定义各顶点的分量。
struct ColorVertex{
float _x,_y,_z; //位置
DWORD _clolor; //颜色
}
struct NormalTexVertex{
float _x,_y,_z; //坐标
float _nx,_ny,_nz; //法线
float _u,_v; //纹理
}
顶点的结构体定义好之后,我们使用“灵活顶点格式”标记的组合来描述顶点的组织结构,以前面两种定义的顶点格式为例:
//该宏定义的含义就是对应该顶点格式顶点结构,包含了位置属性和颜色属性
#define FVF_COLOR (D3DFVF_XYZ | D3DFVF_DIFFUSE)
//该宏定义的含义就是其对应的顶点格式的结构,包含了:位置,法线,纹理属性等信息
#define FVF_NORMAL_TEX (D3DFVF_XTZ | D3DFVF_NORMAL | D3DFVF_TEX1)