Введение в программирование трехмерных игр с 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 — Возвращает созданную прогрессивную сетку.



Содержание раздела