ID3DXBaseMesh::CloneMesh method

Clones a mesh using a declarator.

Syntax

HRESULT CloneMesh(
  [in]                DWORD             Options,
  [in]          const D3DVERTEXELEMENT9 *pDeclaration,
  [in]                LPDIRECT3DDEVICE9 pDevice,
  [out, retval]       LPD3DXMESH        *ppCloneMesh
);

Parameters

Options [in]

Type: DWORD

A combination of one or more D3DXMESH flags specifying creation options for the mesh.

pDeclaration [in]

Type: const D3DVERTEXELEMENT9*

An array of D3DVERTEXELEMENT9 elements, which specify the vertex format for the vertices in the output mesh.

pDevice [in]

Type: LPDIRECT3DDEVICE9

Pointer to an IDirect3DDevice9 interface, representing the device object associated with the mesh.

ppCloneMesh [out, retval]

Type: LPD3DXMESH*

Address of a pointer to an ID3DXMesh interface, representing the cloned mesh.

Return value

Type: HRESULT

If the method succeeds, the return value is D3D_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, E_OUTOFMEMORY.

Remarks

ID3DXBaseMesh::CloneMesh is used to reformat and change the vertex data layout. This is done by creating a new mesh object. For example, use it to add space for normals, texture coordinates, colors, weights, etc. that were not present before.

ID3DXBaseMesh::UpdateSemantics updates the vertex declaration with different semantic information without changing the layout of the vertex buffer. This method does not modify the contents of the vertex buffer. For example, use it to relabel a 3D texture coordinate as a binormal or tangent or vice versa.

Requirements

Requirement Value
Header
D3DX9Mesh.h
Library
D3dx9.lib

See also

ID3DXBaseMesh

ID3DXBaseMesh::CloneMeshFVF

D3DXDeclaratorFromFVF