游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2465|回复: 2

求助一下各位高手,关于ID3DXMesh的GetVertexBuffer的问题

[复制链接]

4

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2009-6-10 08:44:00 | 显示全部楼层 |阅读模式
我是想把ID3DXMesh的VertexBuffer和IndexBuffer得到,然后通过DrawIndexedPrimitive进行渲染.
下面是部分的代码:

  1. //顶点的定义
  2. struct Vertex
  3. {
  4.         Vertex() { }
  5.         Vertex(float x, float y, float z)
  6.         {
  7.                 _x = x;
  8.                 _y = y;
  9.                 _z = z;
  10.         }

  11.         float _x;
  12.         float _y;
  13.         float _z;

  14.         static const DWORD FVF;
  15. };

  16. //模型的建立和Vertex/IndexBuffer的获取
  17. D3DXCreateTeapot(g_pD3DDevice,&g_mesh,0);
  18. g_mesh->GetVertexBuffer(&g_pVB);
  19. g_mesh->GetIndexBuffer(&g_pIB);

  20. //模型的绘制
  21. if (g_pD3DDevice->Clear(0, 0, D3DCLEAR_TARGET,
  22.                         0xffffffff,1.0f,0) == D3D_OK)
  23. {
  24.     g_pD3DDevice->BeginScene();

  25.     g_pD3DDevice->SetStreamSource(0,g_pVB,0,sizeof(Vertex));
  26.     g_pD3DDevice->SetIndices(g_pIB);
  27.     g_pD3DDevice->SetFVF(g_mesh->GetFVF());

  28.     g_pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,g_mesh->GetNumVertices(),0,g_mesh->GetNumFaces());

  29.     g_pD3DDevice->EndScene();
  30.     g_pD3DDevice->Present(0,0,0,0);
  31. }
复制代码


绘制的方式是用的线框模式,所出现的问题:
本来茶壶顶点挺稀疏的一个模型,绘制出来看起来密密麻麻的一堆顶点,我猜想是FVF不匹配的问题,是不是如果要正常使用VertexBuffer里面的顶点,所定义的Struct Vertex必须匹配?
谢谢大家

0

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2009-6-10 09:53:00 | 显示全部楼层

Re:求助一下各位高手,关于ID3DXMesh的GetVertexBuffer的问题

  g_mesh->GetVertexBuffer(&g_pVB);
  g_mesh->GetIndexBuffer(&g_pIB);
........................................       
  g_pd3dDevice->SetStreamSource(0, g_pVB, 0, g_mesh->GetNumBytesPerVertex());
  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() );

4

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 2009-6-10 13:40:00 | 显示全部楼层

Re: Re:求助一下各位高手,关于ID3DXMesh的GetVertexBuffer的问题

我是菜鸟2005: Re:求助一下各位高手,关于ID3DXMesh的GetVertexBuffer的问题

  g_mesh->GetVertexBuffer(&g_pVB);
  g_mesh->GetIndexBuffer(&g_pIB);
..................


谢谢了,原来是对应的Vertex传进去的大小不正确造成的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 01:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表