Função D3DXSplitMesh
Divide uma malha em malhas menores que o tamanho especificado.
Sintaxe
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
Ponteiro para uma interface ID3DXMesh , representando a malha de origem.
-
pAdjacencyIn [in]
-
Tipo: const DWORD*
Ponteiro para uma matriz de três DWORDs por rosto que especificam os três vizinhos para cada rosto na malha a ser simplificado.
-
MaxSize [in]
-
Tipo: const DWORD
Número máximo de vértices na malha resultante.
-
Opções [in]
-
Tipo: const DWORD
Sinalizadores de opção para as novas malhas.
-
pMeshesOut [out]
-
Tipo: DWORD*
Número de malhas retornadas.
-
ppMeshArrayOut [out]
-
Tipo: LPD3DXBUFFER*
Buffer que contém uma matriz de interfaces ID3DXMesh para as novas malhas. Para uma malha de origem dividida em n malhas, ppMeshArrayOut é uma matriz de n ponteiros ID3DXMesh .
-
ppAdjacencyArrayOut [out]
-
Tipo: LPD3DXBUFFER*
Buffer que contém uma matriz de matrizes de adjacência (DWORDs) para as novas malhas. Consulte ID3DXBuffer. Esse parâmetro é opcional.
-
ppFaceRemapArrayOut [out]
-
Tipo: LPD3DXBUFFER*
Buffer que contém uma matriz de matrizes de remapeamento facial (DWORDs) para as novas malhas. Consulte ID3DXBuffer. Esse parâmetro é opcional.
-
ppVertRemapArrayOut [out]
-
Tipo: LPD3DXBUFFER*
Buffer que contém uma matriz de matrizes de remapeamento de vértice para as novas malhas. Consulte ID3DXBuffer. Esse parâmetro é opcional.
Retornar valor
Se a função for bem-sucedida, o valor retornado será D3D_OK. Se a função falhar, o valor retornado poderá ser um dos seguintes valores: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA E_OUTOFMEMORY.
Comentários
Um uso comum dessa função é dividir uma malha com índices de 32 bits (mais de 65535 vértices) em mais de uma malha, cada uma com índices de 16 bits.
As matrizes de remapeamento de vértice, vértice e adjacência são matrizes DWORDs em que cada matriz contém n ponteiros DWORD, seguidos pelos dados DWORD referenciados pelos ponteiros. Por exemplo, para obter as informações de remapeamento facial da face 3 na malha 2, o código a seguir pode ser usado, supondo que os dados de remapeamento facial sejam retornados em uma variável chamada ppFaceRemapArrayOut.
const DWORD **face_remaps =
static_cast<DWORD **>(ppFaceRemapArrayOut->GetBufferPointer());
const DWORD remap = face_remaps[2][3];
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Biblioteca |
|
Confira também