netlib.narod.ru< Назад | Оглавление | Далее >

3.5. Геометрические объекты D3DX

Создание трехмерных объектов путем прописывания в коде данных каждого, составляющего их треугольника, является утомительным занятием. К счастью, библиотека D3DX предлагает несколько методов, генерирующих данные сеток простых трехмерных объектов за нас.

Библиотека D3DX предоставляет следующие шесть методов для создания сеток:


Рис. 3.3. Объекты, создаваемые и визуализируемые с использованием функций D3DXCreate*

Рис. 3.3. Объекты, создаваемые и визуализируемые с использованием функций D3DXCreate*


Все шесть функций применяются одинаково и используют структуру данных сетки D3DX ID3DXMesh и интерфейс ID3DXBuffer. Подробнее об этих интерфейсах мы поговорим в главе 10 и главе 11. Сейчас мы проигнорируем детали их функционирования и сосредоточимся на простейшем варианте их использования.

HRESULT D3DXCreateTeapot(
     LPDIRECT3DDEVICE9 pDevice, // связанное с сеткой устройство
     LPD3DXMESH* ppMesh,        // указатель на полученную сетку
     LPD3DXBUFFER* ppAdjacency  // сейчас присвоить ноль
);

Вот пример использования функции D3DXCreateTeapot:

ID3DXMesh* mesh = 0;
D3DXCreateTeapot(_device, &mesh, 0);

После того, как мы сгенерировали данные сетки, можно нарисовать ее с помощью метода ID3DXMesh::DrawSubset. Единственный параметр этого метода идентифицирует подгруппу сетки. Генерируемые функциями D3DXCreate* сетки состоят из одной подгруппы, так что в этом параметре передается ноль. Вот пример визуализации сетки:

_device->BeginScene();
     mesh->DrawSubset(0);
_device->EndScene();

Когда вы завершите работу с сеткой, освободите ее:

_mesh->Release();
_mesh = 0;

netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz