Compartilhar via


Método ID3DXMesh::Optimize

Gera uma nova malha com rostos e vértices reordenados para otimizar o desempenho do desenho.

Sintaxe

HRESULT Optimize(
  [in]            DWORD        Flags,
  [in]      const DWORD        *pAdjacencyIn,
  [in, out]       DWORD        *pAdjacencyOut,
  [in, out]       DWORD        *pFaceRemap,
  [out]           LPD3DXBUFFER *ppVertexRemap,
  [out]           LPD3DXMESH   *ppOptMesh
);

Parâmetros

Sinalizadores [in]

Tipo: DWORD

Especifica o tipo de otimização a ser executada. Esse parâmetro pode ser definido como uma combinação de um ou mais sinalizadores de D3DXMESHOPT e D3DXMESH (exceto D3DXMESH_32BIT, D3DXMESH_IB_WRITEONLY e D3DXMESH_WRITEONLY).

pAdjacencyIn [in]

Tipo: const DWORD*

Ponteiro para uma matriz de três DWORDs por rosto que especifica os três vizinhos para cada rosto na malha de origem. Se a borda não tiver rostos adjacentes, o valor será 0xffffffff. Consulte Observações.

pAdjacencyOut [in, out]

Tipo: DWORD*

Ponteiro para uma matriz de três DWORDs por rosto que especifica os três vizinhos para cada rosto na malha otimizada. Se a borda não tiver rostos adjacentes, o valor será 0xffffffff.

pFaceRemap [in, out]

Tipo: DWORD*

Uma matriz de DWORDs, uma por rosto, que identifica a face de malha original que corresponde a cada rosto na malha otimizada. Se o valor fornecido para esse argumento for NULL, os dados de remapeamento facial não serão retornados.

ppVertexRemap [out]

Tipo: LPD3DXBUFFER*

Endereço de um ponteiro para uma interface ID3DXBuffer , que contém um DWORD para cada vértice que especifica como os novos vértices são mapeados para os vértices antigos. Esse remapeamento será útil se você precisar alterar dados externos com base no novo mapeamento de vértice.

ppOptMesh [out]

Tipo: LPD3DXMESH*

Endereço de um ponteiro para uma interface ID3DXMesh , representando a malha otimizada.

Valor retornado

Tipo: HRESULT

Se o método for bem-sucedido, o valor retornado será D3D_OK. Se o método falhar, o valor retornado poderá ser um dos seguintes: D3DERR_INVALIDCALL, E_OUTOFMEMORY.

Comentários

Esse método gera uma nova malha. Antes de executar o Optimize, um aplicativo deve gerar um buffer de adjacência chamando ID3DXBaseMesh::GenerateAdjacency. O buffer de adjacência contém dados de adjacência, como uma lista de bordas e os rostos adjacentes uns aos outros.

Esse método é muito semelhante ao método ID3DXBaseMesh::CloneMesh , exceto que ele pode executar a otimização ao gerar o novo clone da malha. A malha de saída herda todos os parâmetros de criação da malha de entrada.

Requisitos

Requisito Valor
parâmetro
D3DX9Mesh.h
Biblioteca
D3dx9.lib

Confira também

ID3DXMesh

ID3DXMesh::OptimizeInplace