从顶点缓冲区 (Direct3D 9) 呈现

从顶点缓冲区呈现顶点数据需要几个步骤。 首先,需要通过调用 IDirect3DDevice9::SetStreamSource 方法来设置流源,如以下示例所示。

d3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );

IDirect3DDevice9::SetStreamSource 的第一个参数告诉 Direct3D 设备数据流的源。 第二个参数是要绑定到数据流的顶点缓冲区。 第三个参数是从流开头到顶点数据开头的偏移量(以字节为单位)。 第四个参数是组件的步幅(以字节为单位)。 在上面的示例代码中,CUSTOMVERTEX 的大小用于组件的步幅。

下一步是通过调用 IDirect3DDevice9::SetVertexShader 方法通知 Direct3D 要使用的顶点着色器。 以下示例代码设置顶点着色器的 FVF 代码。 这会通知 Direct3D 它正在处理的顶点类型。

d3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );

设置流源和顶点着色器后,任何绘制方法都将使用顶点缓冲区。 下面的代码示例演示如何使用 IDirect3DDevice9::D rawPrimitive 方法呈现顶点缓冲区中的顶点。

d3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );

IDirect3DDevice9::D rawPrimitive 接受的第二个参数是顶点缓冲区中要加载的第一个向量的索引。

顶点缓冲区

从顶点缓冲区和索引缓冲区呈现 (Direct3D 9)