Compartir a través de


Función D3DXUVAtlasCreate

Cree un atlas UV para una malla.

Sintaxis

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

Parámetros

pMesh [in]

Tipo: LPD3DXMESH

Puntero a una malla de entrada (vea ID3DXMesh) que contiene la geometría del objeto para calcular el atlas. Como mínimo, la malla debe contener datos de posición y coordenadas de textura 2D.

dwMaxChartNumber [in]

Tipo: UINT

Número máximo de gráficos en los que se va a particionar la malla. Vea los comentarios sobre los modos de creación de particiones. Use 0 para indicar a D3DX que el atlas debe parametrizarse en función de la extensión.

fMaxStretch [in]

Tipo: FLOAT

Cantidad de extensión permitida. 0 significa que no se permite ningún extendido, 1 significa que se puede usar cualquier cantidad de extensión.

dwWidth [in]

Tipo: UINT

Ancho de textura.

dwHeight [in]

Tipo: UINT

Alto de textura.

fGutter [in]

Tipo: FLOAT

Distancia mínima, en elementos de textura, entre dos gráficos del atlas. El medianil siempre se escala por el ancho; por lo tanto, si se usa un margen de 2,5 en una textura de 512 x 512, la distancia mínima entre dos gráficos es de 2,5 / 512,0 elementos de textura.

dwTextureIndex [in]

Tipo: DWORD

Índice de coordenadas de textura de base cero que identifica qué conjunto de coordenadas de textura se van a usar.

pdwAdjacency [in]

Tipo: const DWORD*

Puntero a una matriz de datos de adyacencia. con 3 DWORD por cara, lo que indica qué triángulos están adyacentes entre sí (vea ID3DXBaseMesh::GenerateAdjacency).

pdwFalseEdges

Tipo: const DWORD*

Matriz con 3 DWORDS por cara. Cada cara indica si un borde es false o no. Un borde distinto de false se indica mediante -1, un borde false se indica mediante cualquier otro valor. Esto permite la parametrización de una malla de quads donde los bordes hacia abajo en el medio de cada cuadrángulo no se cortarán.

pfIMTArray [in]

Tipo: FLOAT*

Puntero a una matriz de tensores de métricas integrados que describe cómo estirar un triángulo (consulte IntegratedMetricTensor).

pCallback [in]

Tipo: LPD3DXUVATLASCB

Puntero a una función de devolución de llamada (vea LPD3DXUVATLASCB) que es útil para supervisar el progreso.

fCallbackFrequency [in]

Tipo: FLOAT

Especifique la frecuencia con la que D3DX llamará a la devolución de llamada; un valor predeterminado razonable es 0,0001f.

pUserContent [in]

Tipo: LPVOID

Puntero a un valor definido por el usuario que se pasa a la función de devolución de llamada; Normalmente, una aplicación usa para pasar un puntero a una estructura de datos que proporciona información de contexto para la función de devolución de llamada.

dwOptions [in]

Tipo: DWORD

Especifique la calidad de los gráficos generados. Véase D3DXUVATLAS.

ppMeshOut [in]

Tipo: LPD3DXMESH*

Puntero a la malla creada con el atlas (consulte ID3DXMesh).

ppFacePartitioning [out]

Tipo: LPD3DXBUFFER*

Puntero a una matriz de los datos finales de creación de particiones faciales. Cada elemento contiene un DWORD por cara (consulte ID3DXBuffer).

ppVertexRemapArray [out]

Tipo: LPD3DXBUFFER*

Puntero a una matriz de vértices reasignados. Cada elemento de matriz identifica el vértice original del que procede cada vértice final (si el vértice se dividió durante la reasignación). Cada elemento de matriz contiene un DWORD por vértice.

pfMaxStretchOut [out]

Tipo: FLOAT*

Puntero al valor máximo de extensión generado por el algoritmo atlas. El intervalo está comprendido entre 0,0 y 1,0.

pdwNumChartsOut [out]

Tipo: UINT*

Puntero al número de gráficos creados por el algoritmo atlas. Si dwMaxChartNumber es demasiado bajo, este parámetro devolverá el número mínimo de gráficos necesarios para crear un atlas.

Valor devuelto

Tipo: HRESULT

Si la función se realiza correctamente, el valor devuelto es D3D_OK; de lo contrario, el valor es D3DERR_INVALIDCALL.

Comentarios

D3DXUVAtlasCreate puede particionar la geometría de malla de dos maneras:

  • Basado en el número de gráficos
  • Según la extensión máxima permitida. Si la extensión máxima permitida es 0, es probable que cada triángulo esté en su propio gráfico.

Requisitos

Requisito Value
Encabezado
D3DX9Mesh.h
Biblioteca
D3dx9.lib

Consulte también

Funciones UVAtlas

Herramienta uv atlas Command-Line (uvatlas.exe)