将顶点数据填充到顶点缓冲中之后,下一步就是渲染显示。首先将后备缓冲设置成蓝色,之后,调用BeginScene
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0L );
g_pd3dDevice->BeginScene();
从一个顶点缓冲中渲染顶点数据需要以下几步:首先,你需要设置资源流;在这里,使用0号资源流。通过调用IDirect3DDevice9::SetStreamSource来指定它。
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
函数的第一个参数标识了设备数据流的来源。第二个参数是与数据流绑定的顶点缓冲。第三个参数是组件的大小,以字节表示。在前面的代码示例中,以CUSTOMVERTEX结构的大小来代替组件的大小。
下一步需要调用IDirect3DDDevice9::SetFVF用来指定固定功能的顶点渲染器。总体说来,自定义顶点渲染器是一个更高级的话题,但是在这里顶点渲染器仅仅是FVF代码。下面的代码片段用来设置FVF。
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
SetFVF的唯一参数是用来指定顶点数据布局的代码。
下一步是使用IDirect3DDevice9::DrawPromitive来渲染顶点缓冲中的顶点:
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );
第一个参数用来指定需要绘制的类型。这里使用D3DPT_TRIANGLELIST来指定一个三角形顶点的列表。第二个参数是需要首先加载的顶点索引。第三个参数说明了绘制的个数。由于这里只绘制一个三角形,所以设置值为1
最后一步要做的是终止场景,并且将后备缓冲与前台缓冲互换。如下所示:
g_pd3dDevice->EndScene();
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
当互换完成之后,客户窗口则会显示出一个每个顶点颜色都不同的三角形。
这个指南向你展示了怎样使用顶点渲染几何形体。指南3:使用矩阵 将介绍矩阵的概念以及如何使用它们。