|
|
我是想把ID3DXMesh的VertexBuffer和IndexBuffer得到,然后通过DrawIndexedPrimitive进行渲染.
下面是部分的代码:
- //顶点的定义
- struct Vertex
- {
- Vertex() { }
- Vertex(float x, float y, float z)
- {
- _x = x;
- _y = y;
- _z = z;
- }
- float _x;
- float _y;
- float _z;
- static const DWORD FVF;
- };
- //模型的建立和Vertex/IndexBuffer的获取
- D3DXCreateTeapot(g_pD3DDevice,&g_mesh,0);
- g_mesh->GetVertexBuffer(&g_pVB);
- g_mesh->GetIndexBuffer(&g_pIB);
- //模型的绘制
- if (g_pD3DDevice->Clear(0, 0, D3DCLEAR_TARGET,
- 0xffffffff,1.0f,0) == D3D_OK)
- {
- g_pD3DDevice->BeginScene();
- g_pD3DDevice->SetStreamSource(0,g_pVB,0,sizeof(Vertex));
- g_pD3DDevice->SetIndices(g_pIB);
- g_pD3DDevice->SetFVF(g_mesh->GetFVF());
- g_pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,g_mesh->GetNumVertices(),0,g_mesh->GetNumFaces());
- g_pD3DDevice->EndScene();
- g_pD3DDevice->Present(0,0,0,0);
- }
复制代码
绘制的方式是用的线框模式,所出现的问题:
本来茶壶顶点挺稀疏的一个模型,绘制出来看起来密密麻麻的一堆顶点,我猜想是FVF不匹配的问题,是不是如果要正常使用VertexBuffer里面的顶点,所定义的Struct Vertex必须匹配?
谢谢大家 |
|