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 |
|
Biblioteca |
|
Consulte también