![]() |
![]() |
![]() |
Generate a new mesh with reordered faces and vertices to optimize drawing performance.
Syntax
HRESULT Optimize(
DWORD Flags, CONST DWORD *pAdjacencyIn, DWORD *pAdjacencyOut, DWORD *pFaceRemap, LPD3DXBUFFER *ppVertexRemap, LPD3DXMESH *ppOptMesh );
Parameters
- Flags
- [in] Specifies the type of optimization to perform. This parameter can be set to a combination of one or more flags from D3DXMESHOPT and D3DXMESH (except D3DXMESH32_BIT, D3DXMESH_IB_WRITEONLY, and D3DXMESH_WRITEONLY).
- pAdjacencyIn
- [in] Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the source mesh. If the edge has no adjacent faces, the value is 0xffffffff. See Remarks.
- pAdjacencyOut
- [in, out] Pointer to a destination buffer for the face adjacency array of the optimized mesh. The face adjacency is stored as an array of arrays. The innermost array is three indices of adjacent triangles, and the outer array is one set of face adjacency per triangle in the mesh.
- pFaceRemap
- [in, out] Pointer to a destination buffer containing the new index for each face.
- ppVertexRemap
- [out] Address of a pointer to an ID3DXBuffer interface; containing the new index for each vertex.
- ppOptMesh
- [out] Address of a pointer to an ID3DXMesh interface, representing the optimized mesh.
Return Value
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 The method call is invalid. For example, a method's parameter may have an invalid value. E_OUTOFMEMORY Microsoft Direct3D could not allocate sufficient memory to complete the call.
Remarks
This method generates a new mesh.
Before running ID3DXMesh::Optimize, an application must generate an adjacency buffer by calling ID3DXMesh::GenerateAdjacency. The adjacency buffer contains adjacency data such as a list of edges and the faces that are adjacent to each other.
This method is very similar to the ID3DXBaseMesh::CloneMesh method, except that it can perform optimization while generating the new clone of the mesh. The output mesh inherits all of the creation parameters of the input mesh.
See Also
ID3DXMesh::OptimizeInplace