有时,需要将Mesh的数据另外复制一份,可以使用ID3DXMesh::CloneMeshFVF方法:
HRESULT ID3DXMesh::CloneMeshFVF( DWORD Options, DWORD FVF, LPDIRECT3DDEVICE9 pDevice, LPD3DXMESH *ppCloneMesh ); |
l Options –创建Mesh的标志。完整信息可参考SDK文档。下面的几个很常用:
n D3DXMESH_32BIT –使用32位顶点索引
n D3DXMESH_MANAGED –Mesh数据将被放在受控的内存缓冲池中
n D3DXMESH_WRITEONLY –Mesh数据只能执行写操作,不能执行读操作
n D3DXMESH_DYNAMIC –Mesh缓冲将是动态的
l FVF –创建新Mesh的灵活定点格式
l pDevice –与克隆Mesh相关联的D3D设备
l ppCloneMesh –输出新Mesh
这个方法允许指定与原Mesh不同的Options和FVF。例如,现在有一个定点格式为D3DXFVF_XYZ的Mesh,我们想复制一个顶点格式为D3DXFVF_XYZ|D3DXFVF_NORMAL的Mesh,可以这样做:
// assume _mesh and device are valid ID3DXMesh* clone = 0; Mesh->CloneMeshFVF( Mesh->GetOptions(), // use same options as source mesh D3DFVF_XYZ | D3DFVF_NORMAL,// specify clones FVF Device, &clone); |