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


Метод ID3DXMesh::OptimizeInplace

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

Синтаксис

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

Параметры

Флаги [в]

Тип: DWORD

Сочетание одного или нескольких флагов D3DXMESHOPT , указывающее тип выполняемой оптимизации.

pAdjacencyIn [in]

Тип: const DWORD*

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

pAdjacencyOut [out]

Тип: DWORD*

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

pFaceRemap [out]

Тип: DWORD*

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

ppVertexRemap [out]

Тип: LPD3DXBUFFER*

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

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

Тип: HRESULT

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

Комментарии

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

Примечание

Этот метод завершится ошибкой, если сетка совместно использует буфер вершин с другой сеткой, если D3DXMESHOPT_IGNOREVERTS не задано в разделе Флаги.

 

Требования

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

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

ID3DXMesh

ID3DXMesh::Optimize