Freigeben über


D3DXUVAtlasCreate-Funktion

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

Syntax

HRESULT D3DXUVAtlasCreate(
  _In_        LPD3DXMESH      pMesh,
  _In_        UINT            dwMaxChartNumber,
  _In_        FLOAT           fMaxStretch,
  _In_        UINT            dwWidth,
  _In_        UINT            dwHeight,
  _In_        FLOAT           fGutter,
  _In_        DWORD           dwTextureIndex,
  _In_  const DWORD           *pdwAdjacency,
        const DWORD           *pdwFalseEdges,
  _In_        FLOAT           *pfIMTArray,
  _In_        LPD3DXUVATLASCB pCallback,
  _In_        FLOAT           fCallbackFrequency,
  _In_        LPVOID          pUserContext,
  _In_        DWORD           dwOptions,
  _In_        LPD3DXMESH      *ppMeshOut,
  _Out_       LPD3DXBUFFER    *ppFacePartitioning,
  _Out_       LPD3DXBUFFER    *ppVertexRemapArray,
  _Out_       FLOAT           *pfMaxStretchOut,
  _Out_       UINT            *pdwNumChartsOut
);

Parameter

pMesh [in]

Typ: LPD3DXMESH

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

dwMaxChartNumber [in]

Typ: UINT

Die maximale Anzahl von Diagrammen, in die das Gitter partitioniert werden soll. Weitere Informationen finden Sie unter 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 Dehnung. 0 bedeutet, dass keine Dehnung zulässig ist, 1 bedeutet, dass eine beliebige Menge an Dehnung verwendet werden kann.

dwWidth [in]

Typ: UINT

Texturbreite.

dwHeight [in]

Typ: UINT

Texturhöhe.

fGutter [in]

Typ: FLOAT

Der Mindestabstand in Texels zwischen zwei Diagrammen auf dem Atlas. Die Rinne wird immer nach der Breite skaliert; Wenn also eine Rinne von 2,5 für eine Textur von 512 x 512 verwendet wird, beträgt der mindeste Abstand zwischen zwei Diagrammen 2,5 / 512,0 Texel.

dwTextureIndex [in]

Typ: DWORD

Nullbasierter Texturkoordinatenindex, der angibt, welcher Satz von Texturkoordinaten verwendet werden soll.

pdwAdjacency [in]

Typ: const DWORD*

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

pdwFalseEdges

Typ: const DWORD*

Ein Array mit 3 DWORDS pro Gesicht. Jedes Gesicht gibt an, ob eine Kante falsch ist oder nicht. Ein nicht falscher Rand wird durch -1 angegeben, ein falscher Rand wird durch einen anderen Wert angegeben. 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 tensoren, 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 vernünftiger 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 generierten Diagramme an. Siehe D3DXUVATLAS.

ppMeshOut [in]

Typ: LPD3DXMESH*

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

ppFacePartitioning [out]

Typ: LPD3DXBUFFER*

Ein Zeiger auf ein Array der endgültigen Gesichtspartitionierungsdaten. Jedes Element enthält ein 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.

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 von Diagrammen, die vom Atlas-Algorithmus erstellt wurden. Wenn dwMaxChartNumber zu niedrig ist, gibt dieser Parameter die Mindestanzahl von Diagrammen zurück, die zum Erstellen eines Atlass erforderlich sind.

Rückgabewert

Typ: HRESULT

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

Bemerkungen

D3DXUVAtlasCreate kann die Gittergeometrie auf zwei Arten partitionieren:

  • Basierend auf der Anzahl der Diagramme
  • Basierend auf der maximal zulässigen Stretch. Wenn die maximal zulässige Stretch 0 ist, befindet sich jedes Dreieck wahrscheinlich in einem eigenen Diagramm.

Anforderungen

Anforderung Wert
Header
D3DX9Mesh.h
Bibliothek
D3dx9.lib

Siehe auch

UVAtlas-Funktionen

UV Atlas Command-Line Tool (uvatlas.exe)