Compartir a través de


Función D3DXSplitMesh

Divide una malla en mallas más pequeñas que el tamaño especificado.

Sintaxis

void D3DXSplitMesh(
  _In_        LPD3DXMESH   pMeshIn,
  _In_  const DWORD        *pAdjacencyIn,
  _In_  const DWORD        MaxSize,
  _In_  const DWORD        Options,
  _Out_       DWORD        *pMeshesOut,
  _Out_       LPD3DXBUFFER *ppMeshArrayOut,
  _Out_       LPD3DXBUFFER *ppAdjacencyArrayOut,
  _Out_       LPD3DXBUFFER *ppFaceRemapArrayOut,
  _Out_       LPD3DXBUFFER *ppVertRemapArrayOut
);

Parámetros

pMeshIn [in]

Tipo: LPD3DXMESH

Puntero a una interfaz ID3DXMesh , que representa la malla de origen.

pAdjacencyIn [in]

Tipo: const DWORD*

Puntero a una matriz de tres DWORD por cara que especifican los tres vecinos para cada cara de la malla que se va a simplificar.

MaxSize [in]

Tipo: const DWORD

Número máximo de vértices en la malla resultante.

Opciones [in]

Tipo: const DWORD

Marcas de opción para las nuevas mallas.

pMeshesOut [out]

Tipo: DWORD*

Número de mallas devueltas.

ppMeshArrayOut [out]

Tipo: LPD3DXBUFFER*

Búfer que contiene una matriz de interfaces ID3DXMesh para las nuevas mallas. Para una malla de origen dividida en n mallas, ppMeshArrayOut es una matriz de punteros ID3DXMesh .

ppAdjacencyArrayOut [out]

Tipo: LPD3DXBUFFER*

Búfer que contiene una matriz de matrices de adyacencias (DWORD) para las nuevas mallas. Consulte ID3DXBuffer. Este parámetro es opcional.

ppFaceRemapArrayOut [out]

Tipo: LPD3DXBUFFER*

Búfer que contiene una matriz de matrices de reasignación de caras (DWORD) para las nuevas mallas. Consulte ID3DXBuffer. Este parámetro es opcional.

ppVertRemapArrayOut [out]

Tipo: LPD3DXBUFFER*

Búfer que contiene una matriz de matrices de reasignación de vértices para las nuevas mallas. Consulte ID3DXBuffer. Este parámetro es opcional.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es D3D_OK. Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes valores: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

Comentarios

Un uso común de esta función es dividir una malla con índices de 32 bits (más de 65535 vértices) en más de una malla, cada una de las cuales tiene índices de 16 bits.

Las matrices de adyacencia, reasignación de vértices y remape facial son matrices DWORD, donde cada matriz contiene n punteros DWORD, seguidos de los datos DWORD a los que hacen referencia los punteros. Por ejemplo, para obtener la información de mapa facial de la cara 3 en la malla 2, se podría usar el código siguiente, suponiendo que se devolvieron los datos de remap de caras en una variable denominada ppFaceRemapArrayOut.

   
const DWORD **face_remaps = 
    static_cast<DWORD **>(ppFaceRemapArrayOut->GetBufferPointer());
const DWORD remap = face_remaps[2][3];

Requisitos

Requisito Value
Encabezado
D3DX9Mesh.h
Biblioteca
D3dx9.lib

Consulte también

Funciones de malla