您的位置:首页 > 其它

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

2006-08-14 23:53 323 查看
1、 渲染物体
经过前面这么多步骤,做足了准备工作,就可以渲染物体,显示三维空间的图像了。这时心情要兴奋起来,就看到自己辛苦的果实了。
仔细地看一下前面的代码,创建的缓冲区还没有设置给D3D设备。下面就来做这方面的工作:

// 渲染顶点缓冲区的内容。
m_pd3dDevice->SetStreamSource( 0, m_pVB, 0, sizeof(VT_CAITRIANGLE) );
m_pd3dDevice->SetFVF( VT_CAITRIANGLE::dwFVF );
m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 );

上面这段代码先设置顶点缓冲区给D3D设备,第一个参数选择渲染通道,由于现在的显示卡提供多个通道显示,以便加速显示。这个参数可以根据枚举设备的特性来知道最大的通道数。
第二个参数是上面的顶点缓冲区,就是每个顶点的坐标值。
第三个参数是指明从顶点缓冲区什么位置开始渲染,这里是从缓冲区开始位置开始,所以设置为0。
第四个参数是每个顶点占用的大小,因为每个顶点的数据,可以有三个坐标值、纹理坐标、颜色值和其它数据。

接着下来调用SetFVF函数来设置顶点的格式,这里设置为上面的定义的顶点格式VT_CAITRIANGLE::dwFVF。

最后一行代码就是真正地画两个三角形在屏幕缓冲区里。它的第一个参数是设置显示顶点的格式,这里按三角形列表的形式来显示。
第二个参数是设置从那个顶点开始,这里是从0顶点开始。
第三个参数是表示有多少个三角形,这里有两个三角形。

通过上面的过程来学习D3D是怎么样渲染一帧图像的,不管有多么复杂的物体要显示,也不管有多少个三角形要显示,所有的过程是一样的。开始看到的三角形就显示出来了,也许你发现这里只显示三角形的直线,其实我设置了D3D的设备只显示线框模型。如下面所示:

//只显示线框.
m_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);

使用这种模式,可以很方便调试没有设置光线的模型。也很容易看出来有多少个三角形在那里显示。这个例子非常简单吧,其实3D的图像显示就是这么样简单的,不过要理解它的意思,还是看一下我的例子代码和调试一下,就更会快速度掌握D3D了。



电子书MM3D引擎源程序例子源程序49元一套
联系人:蔡军生
联系方式:
QQ: 9073204
EMAIL: caimouse1976 at sina.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: