获取加载进ID3DXMESH后的.x文件的信息
来源:互联网 发布:eduline源码 编辑:程序博客网 时间:2024/05/17 23:25
通常,我们获得了一个LPD3DXMESH指针来保存一个.x文件的顶点与索引信息,但是,我们通常会需要直接针对顶点来做一些事情,比如,求包围盒等。那么这个时候我们就需要提取模型中的相关顶点信息。接下来,我就简单的说一下我实现提取顶点位置信息的过程。
大家首先要知道以下这个方法:
static LPVOID pV;
pMesh->LockVertexBuffer( 0,&pV ); // 锁定顶点缓冲区
pMesh->UnlockVertexBuffer();
这个方法是为了获取由ID3DXMESH所保存的顶点缓冲区的首地址,但是,我们此时并不知道顶点声明的结构是怎么样的。所以,除了明确知道第一个指向的是第一个的顶点的位置信息(可以通过(LPD3DXVEC3)pV来编译查看),我们并不能准确的猜测下一个顶点需要如何移动指针的位置来定位。
这个时候,我们希望能够让pV只保存顶点位置信息,这可以通过:
HRESULT CloneMesh(
DWORD Options,
CONST D3DVERTEXELEMENT9 * pDeclaration,
LPDIRECT3DDEVICE9 pDevice,
LPD3DXMESH * ppCloneMesh
);
来做到,当然使用CloneFVFMesh也可以做到,但是现在是shader编程大行其道的时代,感觉灵活顶点格式有点力不从心了。
这个函数是ID3DXMESH的成员函数,他通过传入一个你需要的顶点声明结构来从现有的ID3DXMESH中提取你需要的部分,并把他们克隆到一个新的ID3DXMESH中去,这样你就可以掌握当前的指针所指向的是什么样的信息,并通过强制类型转换读取它。
下面是整个提取顶点信息的代码:
//需要重新设置的节点结构
D3DVERTEXELEMENT9 _decl[] =
{
{0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
D3DDECL_END()
};
//重新设置用到的mesh指针
LPD3DXMESH pMesh;
//克隆顶点
m_pMesh->CloneMesh( D3DXMESH_MANAGED, _decl, pDevice, &pMesh );
从上面的代码中可以看出,我定义的顶点声明中只包含了位置信息,那么克隆出来的pMesh中的顶点缓冲自然也只包含顶点位置信息。
同理我们也可以提取顶点中法线,纹理坐标等所有有用的东东。
Enjoy!!
- 获取加载进ID3DXMESH后的.x文件的信息
- ID3DXMesh接口 创建自己的立方体网格
- 【jQuery】如何获取uploadify上传文件后的返回信息.
- 获取文件的信息
- 获取文件的信息
- 获取文件的信息
- 获取文件的版本信息
- 获取 RRD 文件的信息
- 获取清单文件的信息
- 获取文件的简单信息
- 获取WinCE已加载驱动的信息
- 获取WinCE已加载驱动的信息
- 获取WinCE已加载驱动的信息
- 获取WinCE已加载驱动的信息
- TexturePacker打包后的文件在cocos2d-x加载和使用
- 页面加载后获取光标的问题
- 获取WebView加载网页后的cookies
- 获取加载后的所有feature
- 什么是网络驱动?
- tlb、tlh和tli文件的关系
- 3月OpenParty春晴活动纪实——“如何成为一个高效的程序员”
- SQL还原数据库后孤立用户问题处理
- MyEclipse 配置TOMCAT(装载)
- 获取加载进ID3DXMESH后的.x文件的信息
- AND的优先顺序高于OR的优先顺序
- 使用XML管理模版資源
- Larbin 搜索引擎源码赏析——(五)为二次开发用户提供的进一步处理网页的接口函数
- HLSL中的函数
- References_2009_04_01
- 轻量级服务器选择
- aix关于ftp的问题
- typedef_Names