Funzione D3DXUVAtlasCreate

Creare un atlas UV per una mesh.

Sintassi

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
);

Parametri

pMesh [in]

Tipo: LPD3DXMESH

Puntatore a una mesh di input (vedere ID3DXMesh) che contiene la geometria dell'oggetto per il calcolo dell'atlas. Come minimo, la mesh deve contenere dati di posizione e coordinate di trama 2D.

dwMaxChartNumber [in]

Tipo: UINT

Numero massimo di grafici in cui partizionare la mesh. Vedere le osservazioni sulle modalità di partizionamento. Usare 0 per indicare a D3DX che l'atlas deve essere parametrizzato in base all'estensione.

fMaxStretch [in]

Tipo: FLOAT

Quantità di estensione consentita. 0 significa che non è consentita alcuna estensione, 1 significa che è possibile utilizzare qualsiasi quantità di estensione.

dwWidth [in]

Tipo: UINT

Larghezza trama.

dwHeight [in]

Tipo: UINT

Altezza trama.

fGutter [in]

Tipo: FLOAT

Distanza minima, in texel, tra due grafici sull'atlas. La barra viene sempre ridimensionata in base alla larghezza; quindi, se viene usata una barra di 2,5 su una trama 512x512, la distanza minima tra due grafici è 2,5 / 512,0 texel.

dwTextureIndex [in]

Tipo: DWORD

Indice delle coordinate della trama in base zero che identifica il set di coordinate della trama da usare.

pdwAdjacency [in]

Tipo: const DWORD*

Puntatore a una matrice di dati di adiacenza. con 3 DWORD per viso, che indica quali triangoli sono adiacenti tra loro (vedere ID3DXBaseMesh::GenerateAdjacency).

pdwFalseEdges

Tipo: const DWORD*

Matrice con 3 DWORDS per viso. Ogni viso indica se un bordo è false o meno. Un bordo diverso da false è indicato da -1, un bordo falso è indicato da qualsiasi altro valore. Ciò consente la parametrizzazione di una mesh di quad in cui i bordi verso il basso del centro di ogni quad non verranno tagliati.

pfIMTArray [in]

Tipo: FLOAT*

Puntatore a una matrice di tensori metrici integrati che descrive come estendere un triangolo (vedere IntegratedMetricTensor).

pCallback [in]

Tipo: LPD3DXUVATLASCB

Puntatore a una funzione di callback (vedere LPD3DXUVATLASCB) utile per il monitoraggio dello stato di avanzamento.

fCallbackFrequency [in]

Tipo: FLOAT

Specificare la frequenza con cui D3DX chiamerà il callback; un valore predefinito ragionevole è 0,0001f.

pUserContent [in]

Tipo: LPVOID

Puntatore a un valore definito dall'utente passato alla funzione di callback; in genere usato da un'applicazione per passare un puntatore a una struttura di dati che fornisce informazioni di contesto per la funzione di callback.

dwOptions [in]

Tipo: DWORD

Specificare la qualità dei grafici generati. Vedere D3DXUVATLAS.

ppMeshOut [in]

Tipo: LPD3DXMESH*

Puntatore alla mesh creata con l'atlas (vedere ID3DXMesh).

ppFacePartitioning [out]

Tipo: LPD3DXBUFFER*

Puntatore a una matrice dei dati di partizionamento del viso finale. Ogni elemento contiene una DWORD per viso (vedere ID3DXBuffer).

ppVertexRemapArray [out]

Tipo: LPD3DXBUFFER*

Puntatore a una matrice di vertici mappati. Ogni elemento matrice identifica il vertice originale da cui proviene ogni vertice finale (se il vertice è stato diviso durante il mapping). Ogni elemento matrice contiene un DWORD per vertice.

pfMaxStretchOut [out]

Tipo: FLOAT*

Puntatore al valore massimo di estensione generato dall'algoritmo atlas. L'intervallo è compreso tra 0,0 e 1,0.

pdwNumChartsOut [out]

Tipo: UINT*

Puntatore al numero di grafici creati dall'algoritmo atlas. Se dwMaxChartNumber è troppo basso, questo parametro restituirà il numero minimo di grafici necessari per creare un atlas.

Valore restituito

Tipo: HRESULT

Se la funzione ha esito positivo, il valore restituito è D3D_OK; in caso contrario, il valore è D3DERR_INVALIDCALL.

Commenti

D3DXUVAtlasCreate può partizionare la geometria mesh in due modi:

  • In base al numero di grafici
  • In base all'estensione massima consentita. Se l'estensione massima consentita è 0, è probabile che ogni triangolo si troverà nel proprio grafico.

Requisiti

Requisito Valore
Intestazione
D3DX9Mesh.h
Libreria
D3dx9.lib

Vedi anche

Funzioni UVAtlas

Strumento uv Atlas Command-Line (uvatlas.exe)