D3DXSplitMesh-Funktion

Teilt ein Gitternetz in Gitternetze 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 Quellgitternetz darstellt.

pAdjacencyIn [ In]

Typ: const DWORD *

Zeiger auf ein Array von drei DWORDs pro Gesicht, die die drei Nachbarn für jedes Gesicht im Gitternetz angeben, die vereinfacht werden sollen.

MaxSize [ In]

Typ: const DWORD

Maximale Anzahl von Scheitelzeichen im resultierenden Gitter.

Optionen [ In]

Typ: const DWORD

Optionsflags für die neuen Gitter.

pMeshesOut [ out]

Typ: DWORD*

Anzahl der zurückgegebenen Gitternetze.

ppMeshArrayOut [ out]

Typ: LPD3DXBUFFER*

Puffer, der ein Array von ID3DXMesh-Schnittstellen für die neuen Gitternetze enthält. Für ein Quellgitternetz, das in n Gitternetze aufgeteilt 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 Gitternetze enthält. Siehe ID3DXBuffer. Dieser Parameter ist optional.

ppFaceRemapArrayOut [ out]

Typ: LPD3DXBUFFER*

Puffer mit einem Array von Gesichtszuordnungsarrays (Face Remap Arrays, DWORDs) für die neuen Gitter. Siehe ID3DXBuffer. Dieser Parameter ist optional.

ppVertRemapArrayOut [ out]

Typ: LPD3DXBUFFER*

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

Rückgabewert

Wenn die Funktion erfolgreich ist, ist 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.

Hinweise

Diese Funktion wird häufig verwendet, um ein Gitternetz mit 32-Bit-Indizes (mehr als 65535 Scheitelungen) in mehr als ein Gitternetz zu unterteilen, von denen jedes über 16-Bit-Indizes verfügt.

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 die Zeiger verweisen. Um beispielsweise die Gesichtszuordnungsinformationen für Gesicht 3 in Gitternetz 2 zu erhalten, könnte der folgende Code verwendet werden, vorausgesetzt, die Gesichtszuordnungsdaten wurden in einer Variablen namens 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

Mesh-Funktionen