DirectXMesh icon indicating copy to clipboard operation
DirectXMesh copied to clipboard

Split Mesh

Open walbourn opened this issue 10 years ago • 2 comments

A function to break a mesh into multiple index buffers/vertex buffers based on a specified size.

void D3DXSplitMesh(
  _In_   LPD3DXMESH pMeshIn,
  _In_   const DWORD *pAdjacencyIn,
  _In_   const DWORD MaxSize,
  _In_   const DWORD Options,
  _Out_  DWORD *pMeshesOut,
  _Out_  LPD3DXBUFFER *ppMeshArrayOut,
  _Out_  LPD3DXBUFFER *ppAdjacencyArrayOut,
  _Out_  LPD3DXBUFFER *ppFaceRemapArrayOut,
  _Out_  LPD3DXBUFFER *ppVertRemapArrayOut
);

This primary use of this function is to take a mesh that requires 32-bit indices into a set of meshes that only requires 16-bit indices, which is most useful when preparing meshes for Feature Level 9.1 devices.

walbourn avatar Jun 18 '15 22:06 walbourn

The need to support Direct3D Feature Level 9.1 is very low. Even UWP apps and Windows phone 8 can assume Feature Level 9.3 or better.

walbourn avatar Jan 31 '18 17:01 walbourn

The split algorithm is basically a loop over faces. If the number of vertices required by adding a new face exceeds a threshold, a new mesh is created.

The function would need to return n IBs, n lists of attributes, and n VB remaps from the original.

It provides updated adjacency information for the new "meshes" by breaking links between split faces.

walbourn avatar Jan 26 '21 08:01 walbourn