Поделиться через


Метод ID3DXMesh::Optimize

Создает новую сетку с переупорядоченными гранями и вершинами для оптимизации производительности рисования.

Синтаксис

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

Параметры

Флаги [in]

Тип: DWORD

Указывает тип выполняемой оптимизации. Для этого параметра можно задать сочетание одного или нескольких флагов из D3DXMESHOPT и D3DXMESH (кроме D3DXMESH_32BIT, D3DXMESH_IB_WRITEONLY и D3DXMESH_WRITEONLY).

pAdjacencyIn [in]

Тип: const DWORD*

Указатель на массив из трех DWORD на лицо, который указывает три соседя для каждого лица в исходной сетке. Если ребро не имеет смежных граней, значение будет 0xffffffff. См. заметки.

pAdjacencyOut [in, out]

Тип: DWORD*

Указатель на массив из трех DWORD на лицо, который указывает три соседя для каждого лица в оптимизированной сетке. Если ребро не имеет смежных граней, значение будет 0xffffffff.

pFaceRemap [in, out]

Тип: DWORD*

Массив DWORD, по одному на лицо, который идентифицирует исходную грань сетки, соответствующую каждой грани в оптимизированной сетке. Если для этого аргумента задано значение NULL, данные о переназначение лиц не возвращаются.

ppVertexRemap [out]

Тип: LPD3DXBUFFER*

Адрес указателя на интерфейс ID3DXBuffer , содержащий DWORD для каждой вершины, указывающий, как новые вершины сопоставляются со старыми вершинами. Это повторное сопоставление полезно, если необходимо изменить внешние данные на основе нового сопоставления вершин.

ppOptMesh [out]

Тип: LPD3DXMESH*

Адрес указателя на интерфейс ID3DXMesh , представляющий оптимизированную сетку.

Возвращаемое значение

Тип: HRESULT

Если метод выполнен успешно, возвращаемое значение будет D3D_OK. В случае сбоя метода возвращается одно из следующих значений: D3DERR_INVALIDCALL E_OUTOFMEMORY.

Комментарии

Этот метод создает новую сетку. Перед запуском Optimize приложение должно создать буфер смежности, вызвав ID3DXBaseMesh::GenerateAdjacency. Буфер смежности содержит данные смежности, такие как список ребер и лиц, расположенных рядом друг с другом.

Этот метод очень похож на метод ID3DXBaseMesh::CloneMesh , за исключением того, что он может выполнять оптимизацию при создании нового клона сетки. Выходная сетка наследует все параметры создания входной сетки.

Требования

Требование Значение
Заголовок
D3DX9Mesh.h
Библиотека
D3dx9.lib

См. также раздел

ID3DXMesh

ID3DXMesh::OptimizeInplace