ID3DXMesh::Optimize-Methode

Generiert ein neues Gitter mit neu angeordneten Gesichtern und Scheitelpunkten, um die Zeichnungsleistung zu optimieren.

Syntax

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

Parameter

Flaggen [in]

Typ: DWORD

Gibt den Typ der auszuführenden Optimierung an. Dieser Parameter kann auf eine Kombination aus einem oder mehreren Flags von D3DXMESHOPT und D3DXMESH festgelegt werden (außer D3DXMESH_32BIT, D3DXMESH_IB_WRITEONLY und D3DXMESH_WRITEONLY).

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. Siehe Hinweise.

pAdjacencyOut [ein, aus]

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.

pFaceRemap [ein, aus]

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.

ppOptMesh [out]

Typ: LPD3DXMESH*

Adresse eines Zeigers auf eine ID3DXMesh-Schnittstelle , die das optimierte Gitter darstellt.

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, E_OUTOFMEMORY.

Bemerkungen

Diese Methode generiert ein neues Gitternetz. Vor dem Ausführen von Optimize 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.

Diese Methode ist der ID3DXBaseMesh::CloneMesh-Methode sehr ähnlich, mit dem Unterschied, dass sie Optimierungen durchführen kann, während der neue Klon des Gitternetzes generiert wird. Das Ausgabegitter erbt alle Erstellungsparameter des Eingabegitters.

Anforderungen

Anforderung Wert
Header
D3DX9Mesh.h
Bibliothek
D3dx9.lib

Siehe auch

ID3DXMesh

ID3DXMesh::OptimizeInplace