D3DXSplitMesh-Funktion

Teilt ein Gitter in Gitter auf, die kleiner als die angegebene Größe sind.

Syntax

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
);

Parameter

pMeshIn [in]

Typ: LPD3DXMESH

Zeiger auf eine ID3DXMesh-Schnittstelle , die das Quellgitter darstellt.

pAdjacencyIn [in]

Typ: const DWORD*

Zeiger auf ein Array von drei DWORDs pro Gesicht, das die drei Nachbarn für jedes Gesicht im zu vereinfachenden Gitter angibt.

MaxSize [in]

Typ: const DWORD

Maximale Anzahl von Scheitelpunkten im resultierenden Gitter.

Optionen [in]

Typ: const DWORD

Optionsflags für die neuen Gitter.

pMeshesOut [out]

Typ: DWORD*

Anzahl der zurückgegebenen Gitter.

ppMeshArrayOut [out]

Typ: LPD3DXBUFFER*

Puffer mit einem Array von ID3DXMesh-Schnittstellen für die neuen Gitter. Für ein Quellgitter, das in n Gitter unterteilt ist, ist ppMeshArrayOut ein Array von n ID3DXMesh-Zeigern .

ppAdjacencyArrayOut [out]

Typ: LPD3DXBUFFER*

Puffer, der ein Array von Adjacency Arrays (DWORDs) für die neuen Gitter enthält. Siehe ID3DXBuffer. Dieser Parameter ist optional.

ppFaceRemapArrayOut [out]

Typ: LPD3DXBUFFER*

Puffer, der ein Array von Gesichtsrezuordnungsarrays (DWORDs) für die neuen Gitter enthält. Siehe ID3DXBuffer. Dieser Parameter ist optional.

ppVertRemapArrayOut [out]

Typ: LPD3DXBUFFER*

Puffer mit einem Array von Vertex-Remap-Arrays für die neuen Gitter. Siehe ID3DXBuffer. Dieser Parameter ist optional.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert D3D_OK. Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden Werte sein: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

Bemerkungen

Eine häufige Verwendung dieser Funktion besteht darin, ein Gitter mit 32-Bit-Indizes (mehr als 65535 Scheitelpunkte) in mehr als ein Gitter aufzuteilen, das jeweils 16-Bit-Indizes aufweist.

Die Arrays adjacency, vertex remap und face remap sind Arrays, bei denen jedes Array n DWORD-Zeiger enthält, gefolgt von den DWORD-Daten, auf die von den Zeigern verwiesen wird. Beispielsweise könnte der folgende Code verwendet werden, um die Informationen zur Neuzuordnung von Gesichtern für Gesicht 3 in Mesh 2 abzurufen, vorausgesetzt, die Daten zur Gesichtszuordnung wurden in einer Variablen mit dem Namen ppFaceRemapArrayOut zurückgegeben.

   
const DWORD **face_remaps = 
    static_cast<DWORD **>(ppFaceRemapArrayOut->GetBufferPointer());
const DWORD remap = face_remaps[2][3];

Anforderungen

Anforderung Wert
Header
D3DX9Mesh.h
Bibliothek
D3dx9.lib

Siehe auch

Gitterfunktionen