netlib.narod.ru | < Назад | Оглавление | Далее > |
Иногда может потребоваться скопировать данные одной сетки в другую. Это можно сделать с помощью метода 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);
netlib.narod.ru | < Назад | Оглавление | Далее > |