Введение в программирование трехмерных игр с DX9


Создание прогессивной сетки



11.3.1. Создание прогессивной сетки

Мы можем создать объект ID3DXPMesh с помощью следующей функции:

HRESULT D3DXGeneratePMesh( LPD3DXMESH pMesh, CONST DWORD *pAdjacency, CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights, CONST FLOAT *pVertexWeights, DWORD MinValue, DWORD Options, LPD3DXPMESH *ppPMesh );

  • pMesh— Исходная сетка на основании данных которой будет создаваться прогрессивная сетка.

  • pAdjacency — Указатель на массив значений типа DWORD, содержащий информацию о смежности граней сетки pMesh.

  • pVertexAttributeWeights — Указатель на массив элементов D3DXATTRIBUTEWEIGHTS размера pMesh->GetNumVertices(), в котором i-ый элемент соответствует i-ой вершине сетки pMesh и задает веса ее атрибутов. Веса атрибутов (attribute weight) используются при определении того какая именно вершина будет удалена при упрощении сетки. Вы можете передать в этом параметре ноль, и тогда для каждой вершины будут использованы веса атрибутов по умолчанию. Более подробно веса атрибутов и структура D3DXATTRIBUTEWEIGHTS обсуждаются в разделе 11.3.2.

  • pVertexWeights — Указатель на массив чисел с плавающей запятой размера pMesh->GetNumVertices(), в котором i-ый элемент соответствует i-ой вершине сетки pMesh и задает вес вершины. Чем больше вес вершины, тем меньше у нее шансов, что она будет удалена в процессе упрощения сетки. Вы можете передать в этом параметре ноль и тогда вес каждой вершины будет равен 1.0 (значение по умолчанию).

  • MinValue — Минимально возможное количество вершин или граней в сетке (что будет учитываться — вершины или грани — определяет следующий параметр Options) до которого может производиться упрощение. Обратите внимание, что это только желаемое значение и, в зависимости от весов вершин/атрибутов, параметры полученной в результате сетки могут не соответствовать этому значению.

  • Options — Один из членов перечисления D3DXMESHSIMP:

    • D3DXMESHSIMP_VERTEX — Указывает, что предыдущий параметр MinValue задает количество вершин.

    • D3DXMESHSIMP_FACE — Указывает, что предыдущий параметр MinValue задает количество граней.

  • ppPMesh — Возвращает созданную прогрессивную сетку.




- Начало -  - Назад -  - Вперед -