Share via


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
D3DX9Mesh.h
Biblioteca
D3dx9.lib

Confira também

Funções de malha