第一 创建一个顶点结构体
struct Vertex
{
Vertex() {}
Vertex( float x, float y, float z)
{
_x = x; _y = y; _z = z; //如果还要颜色,再加颜色 DWORD color
}
}
define Vertex_FVF D3DFVF_XYZ //如果有颜色再加上 | DIFFUSE 等
第二 初始化
IDirectVertexBuffer9 *VB = 0;
Device->CreatVertexBuffer( 顶点缓冲大小, 一般为0, Vertex-FVF, 内存池格式, 返回指针&VB, 0)
如果用索引函数为CreateIndexBuffer()
第三 锁
Vertex *vertices;
VB->Lock( 0, 0, (void **)&vertices, 0)
这里是顶点坐标:
如: vertices[0] = Vertex( 3,5,6);
........
VB->Unlock();
如果是索引顶点:
IB->Lock(............)
indices[0] = 相应上面顶点的下标,0-7..........
渲染状态 Device->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);
此处为线框模式渲染
三个为一组,即可画为三角形.
此下标为三角形个数乘以3
第四 渲染
渲染前要清0
Device->Clear( 0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 颜色, 1.0f, 0) //参照定义
开始渲染 Device->BeginScene();
Device->SetStreamSource( 0, VB, 0, sizeof(Vertex))
如果是索引Device->SetIndice(IB);
Device->SetFVF( Vertex_FVF)
画图 Device->DrawIndexPrimitive( 图元格式, 0, 0. 顶点个数,三角形个数)
如果不是索引顶点渲染,就用Device->DrawPrimitive();
结束渲染 Device->EndScene()
清0 Device->Present(0,0,0,0)
最后释放资源