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

       

Клонирование


Иногда может потребоваться скопировать данные одной сетки в другую. Это можно сделать с помощью метода ID3DXBaseMesh::CloneMeshFVF.

HRESULT ID3DXMesh::CloneMeshFVF( DWORD Options, DWORD FVF, LPDIRECT3DDEVICE9 pDevice, LPD3DXMESH* ppCloneMesh );

Options — Один или несколько флагов, определяющих параметры создаваемого клона сетки. Полный список флагов приведен в описании перечисления D3DXMESH в документации SDK. Наиболее часто используются следующие флаги:

D3DXMESH_32BIT — Сетка будет использовать 32-разрядные индексы.

D3DXMESH_MANAGED — Сетка будет размещена в управляемом пуле памяти.

D3DXMESH_WRITEONLY — Данные сетки будут только записываться и не будут читаться.

D3DXMESH_DYNAMIC — Буферы сетки будут динамическими.

FVF — Настраиваемый формат вершин, используемый для создаваемого клона сетки.

pDevice — Устройство, связанное с клоном сетки.

ppCloneMesh — Возвращает созданный клон сетки.

Обратите внимание, что метод позволяет задать для клона формат вершин отличающийся от формата вершин исходной сетки. Предположим, у нас есть сетка с форматом вершин D3DFVF_XYZ и мы хотим создать ее клон с форматом вершин D3DFVF_XYZ | D3DFVF_NORMAL. Для этого следует написать:

// предполагается, что _mesh и device корректные указатели ID3DXMesh* clone = 0; Mesh->CloneMeshFVF( Mesh->GetOptions(), // используем те же параметры, // что и для исходной сетки D3DFVF_XYZ | D3DFVF_NORMAL,// задаем формат вершин клона Device, &clone);



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