ID3DXMesh::OptimizeInplace-Methode

Generiert ein Gitter mit neu angeordneten Gesichtern und Scheitelpunkten, um die Zeichnungsleistung zu optimieren. Mit dieser Methode wird das vorhandene Gitter neu sortiert.

Syntax

HRESULT OptimizeInplace(
  [in]        DWORD        Flags,
  [in]  const DWORD        *pAdjacencyIn,
  [out]       DWORD        *pAdjacencyOut,
  [out]       DWORD        *pFaceRemap,
  [out]       LPD3DXBUFFER *ppVertexRemap
);

Parameter

Flaggen [in]

Typ: DWORD

Kombination aus einem oder mehreren D3DXMESHOPT-Flags , die den Typ der auszuführenden Optimierung angeben.

pAdjacencyIn [in]

Typ: const DWORD*

Zeiger auf ein Array mit drei DWORDs pro Gesicht, das die drei Nachbarn für jedes Gesicht im Quellgitter angibt. Wenn der Rand keine benachbarten Flächen aufweist, wird der Wert 0xffffffff.

pAdjacencyOut [out]

Typ: DWORD*

Zeiger auf ein Array von drei DWORDs pro Gesicht, das die drei Nachbarn für jedes Gesicht im optimierten Gitter angibt. Wenn der Rand keine benachbarten Flächen aufweist, wird der Wert 0xffffffff. Wenn der für dieses Argument angegebene Wert NULL ist, werden keine Adjacency-Daten zurückgegeben.

pFaceRemap [out]

Typ: DWORD*

Ein Array von DWORDs, eins pro Gesicht, das das ursprüngliche Gittergesicht identifiziert, das jedem Gesicht im optimierten Gitter entspricht. Wenn der für dieses Argument angegebene Wert NULL ist, werden keine Gesichtserkennungsdaten zurückgegeben.

ppVertexRemap [out]

Typ: LPD3DXBUFFER*

Adresse eines Zeigers auf eine ID3DXBuffer-Schnittstelle , die ein DWORD für jeden Scheitelpunkt enthält, der angibt, wie die neuen Scheitelpunkte den alten Scheitelpunkten zugeordnet werden. Diese Neuzuordnung ist nützlich, wenn Sie externe Daten basierend auf der neuen Vertexzuordnung ändern müssen. Wenn der für dieses Argument angegebene Wert NULL ist, werden vertex remap-Daten nicht zurückgegeben.

Rückgabewert

Typ: HRESULT

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

Bemerkungen

Vor dem Ausführen von ID3DXMesh::OptimizeInplace muss eine Anwendung einen Adjacency-Puffer generieren, indem ID3DXBaseMesh::GenerateAdjacency aufgerufen wird. Der Adjacencypuffer enthält Adjacency-Daten, z. B. eine Liste von Kanten und die nebeneinander liegenden Flächen.

Hinweis

Diese Methode schlägt fehl, wenn das Gitter seinen Vertexpuffer mit einem anderen Gitter teilt, es sei denn, die D3DXMESHOPT_IGNOREVERTS ist in Flags festgelegt.

 

Anforderungen

Anforderung Wert
Header
D3DX9Mesh.h
Bibliothek
D3dx9.lib

Siehe auch

ID3DXMesh

ID3DXMesh::Optimize