3D游戏从入门到精通-5

时间:2021-08-15 17:31:59
21   使用Direct3D
2.11.1最简单三角形显示
前面已经学习了顶点、平面以及平面的法向量。接着下面就带你进入奇幻的 3D 世界,由你去创造这个美好的 3D 世界。任何美好的事物都是简单的东西组成的,所以也需要从最简单的物体构造开始。这里主要显示一个三角形,其它关于窗口和初始化 D3D 的设备都已经由 MM3D 引擎做好了,目前只要设置顶点、世界坐标变换矩阵、观察变换矩阵、投影变换矩阵,然后渲染这个三角形,就可以显示屏幕里了。最终显示效果如下图:
 
1、             顶点格式
顶点格式是可变的,是灵活的。由前面可知,顶点肯定是有三个值的,就是三个坐标轴的值。下面先来看看最简单的顶点格式,它定义如下:
 
//定义顶点缓冲区里用到的顶点格式。
struct VT_CAITRIANGLE
{
 D3DXVECTOR3 vPosition;       // 顶点位置。
 static const DWORD dwFVF = D3DFVF_XYZ;
};
这里使用一个结构来定义顶点的格式,后面就可使用这个结构来定义顶点了。看到这个结构里第一个成员vPosition是很熟悉的吧,前面已经说明过使用一个向量来表示一个顶点的。最简单的顶点格式,就是只有一个向量值,其它什么也没有。后面一个成员dwFVF是说明顶点的有什么样数据,这里只有顶点的坐标,所使用了宏定义D3DFVF_XYZ。其实顶点还可以有其它数据在里面的,比如要表示这个顶点的法向量,就需要加入法向量的成员,比如要显示纹理在这个表面上,就需要设置纹理坐标。