Freigeben über


D3DXUVAtlasPartition-Funktion

Erstellen Sie einen UV-Atlas für ein Gitter.

Syntax

HRESULT D3DXUVAtlasPartition(
  _In_        LPD3DXMESH      pMesh,
  _In_        UINT            dwMaxChartNumber,
  _In_        FLOAT           fMaxStretch,
  _In_        DWORD           dwTextureIndex,
  _In_  const DWORD           *pdwAdjacency,
        const DWORD           *pdwFalseEdges,
  _In_        FLOAT           *pfIMTArray,
  _In_        LPD3DXUVATLASCB pCallback,
  _In_        FLOAT           fCallbackFrequency,
  _In_        LPVOID          pUserContent,
  _In_        DWORD           dwOptions,
  _In_        LPD3DXMESH      *ppMeshOut,
  _Out_       LPD3DXBUFFER    pFacePartitioning,
  _Out_       LPD3DXBUFFER    *ppVertexRemapArray,
              LPD3DXBUFFER    *ppPartitionResultAdjacency,
  _Out_       FLOAT           *pfMaxStretchOut,
  _Out_       UINT            *pdwNumChartsOut
);

Parameter

pMesh [in]

Typ: LPD3DXMESH

Zeiger auf ein Eingabegitter (siehe ID3DXMesh), das die Objektgeometrie zum Berechnen des Atlas enthält. Das Gitter muss mindestens Positionsdaten und 2D-Texturkoordinaten enthalten.

dwMaxChartNumber [in]

Typ: UINT

Die maximale Anzahl von Diagrammen, in die das Gitter aufgeteilt werden soll. Siehe Hinweise zu den Partitionierungsmodi. Verwenden Sie 0, um D3DX mitzuteilen, dass der Atlas basierend auf Stretch parametrisiert werden soll.

fMaxStretch [in]

Typ: FLOAT

Die zulässige Dehnungsmenge. 0 bedeutet, dass keine Dehnung zulässig ist, 1 bedeutet, dass eine beliebige Menge an Dehnung verwendet werden kann.

dwTextureIndex [in]

Typ: DWORD

Nullbasierter Texturkoordinatenindex, der angibt, welche Texturkoordinaten verwendet werden sollen.

pdwAdjacency [in]

Typ: const DWORD*

Ein Zeiger auf ein Array von Adjacency-Daten mit 3 DWORDs pro Gesicht, der angibt, welche Dreiecke nebeneinander liegen (siehe ID3DXBaseMesh::GenerateAdjacency).

pdwFalseEdges

Typ: const DWORD*

Ein Array mit 3 DWORDS pro Gesicht. Jede Face gibt an, ob ein Rand false ist oder nicht. Ein nicht falscher Rand wird durch -1 angegeben, ein falscher Rand durch einen beliebigen anderen Wert. Dies ermöglicht die Parametrisierung eines Gitters von Quads, bei dem die Kanten in der Mitte jedes Quads nicht geschnitten werden.

pfIMTArray [in]

Typ: FLOAT*

Ein Zeiger auf ein Array von integrierten Metrik tensors, der beschreibt, wie ein Dreieck gestreckt wird (siehe IntegratedMetricTensor).

pCallback [in]

Typ: LPD3DXUVATLASCB

Ein Zeiger auf eine Rückruffunktion (siehe LPD3DXUVATLASCB), die für die Überwachung des Fortschritts nützlich ist.

fCallbackFrequency [in]

Typ: FLOAT

Geben Sie an, wie oft D3DX den Rückruf aufruft. ein angemessener Standardwert ist 0.0001f.

pUserContent [in]

Typ: LPVOID

Zeiger auf einen benutzerdefinierten Wert, der an die Rückruffunktion übergeben wird; wird in der Regel von einer Anwendung verwendet, um einen Zeiger auf eine Datenstruktur zu übergeben, die Kontextinformationen für die Rückruffunktion bereitstellt.

dwOptions [in]

Typ: DWORD

Geben Sie die Qualität der Diagramme an, die durch Kombinieren eines oder mehrerer D3DXUVATLAS-Flags generiert werden.

ppMeshOut [in]

Typ: LPD3DXMESH*

Zeiger auf das erstellte Gitter mit dem Atlas (siehe ID3DXMesh).

pFacePartitioning [out]

Typ: LPD3DXBUFFER

Ein Zeiger auf ein Array der endgültigen Gesichtspartitionierungsdaten. Jedes Element enthält eine DWORD pro Gesicht (siehe ID3DXBuffer).

ppVertexRemapArray [out]

Typ: LPD3DXBUFFER*

Ein Zeiger auf ein Array neu zugeordneter Scheitelpunkte. Jedes Arrayelement identifiziert den ursprünglichen Scheitelpunkt, von dem jeder letzte Scheitelpunkt stammt (wenn der Scheitelpunkt während der Neuzuordnung geteilt wurde). Jedes Arrayelement enthält ein DWORD pro Scheitelpunkt.

ppPartitionResultAdjacency

Typ: LPD3DXBUFFER*

Adresse eines Zeigers auf eine ID3DXBuffer-Schnittstelle . Dieser Puffer enthält ein Array von drei DWORDs pro Gesicht, die die drei Nachbarn für jedes Gesicht im Ausgabegitter angeben. Dieser Parameter darf nicht NULL sein, da er für den nachfolgenden Aufruf von D3DXUVAtlasPack() erforderlich ist.

pfMaxStretchOut [out]

Typ: FLOAT*

Ein Zeiger auf den maximalen Stretchwert, der vom Atlas-Algorithmus generiert wird. Der Bereich liegt zwischen 0,0 und 1,0.

pdwNumChartsOut [out]

Typ: UINT*

Ein Zeiger auf die Anzahl der vom Atlas-Algorithmus erstellten Diagramme. Wenn dwMaxChartNumber zu niedrig ist, gibt dieser Parameter die Mindestanzahl von Diagrammen zurück, die zum Erstellen eines Atlas erforderlich sind.

Rückgabewert

Typ: HRESULT

Wenn die Funktion erfolgreich ist, wird der Rückgabewert D3D_OK; Andernfalls wird der Wert D3DERR_INVALIDCALL.

Bemerkungen

D3DXUVAtlasPartition ähnelt D3DXUVAtlasCreate, mit der Ausnahme, dass D3DXUVAtlasPartition den letzten Packschritt nicht ausführt.

Anforderungen

Anforderung Wert
Header
D3DX9Mesh.h
Bibliothek
D3dx9.lib

Siehe auch

UVAtlas-Funktionen

UV Atlas Command-Line Tool (uvatlas.exe)