netlib.narod.ru | < Назад | Оглавление | Далее > |
Создание трехмерных объектов путем прописывания в коде данных каждого, составляющего их треугольника, является утомительным занятием. К счастью, библиотека D3DX предлагает несколько методов, генерирующих данные сеток простых трехмерных объектов за нас.
Библиотека D3DX предоставляет следующие шесть методов для создания сеток:
D3DXCreateBox
D3DXCreateSphere
D3DXCreateCylinder
D3DXCreateTeapot
D3DXCreatePolygon
D3DXCreateTorus
Рис. 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 | < Назад | Оглавление | Далее > |