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

 
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
 
 
 
posted @ 2006-08-14 23:53  ajuanabc  阅读(132)  评论(0编辑  收藏  举报