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



         

Куб, созданный и визуализированный как объект IDXMesh



Рисунок 10.5. Куб, созданный и визуализированный как объект ID3DXMesh



Рисунок 10.5. Куб, созданный и визуализированный как объект ID3DXMesh


Приложение демонстрирует большинство действий, которые обсуждались в этой главе, включая следующие операции:

Создание пустой сетки.

Заполнение сетки данными о геометрии куба.

Указание подгрупп, к которым относится каждая из граней сетки.

Генерация информации о смежности граней сетки.

Оптимизация сетки.

Рисование сетки.

Обратите внимание, что код не относящийся к теме данной главы пропущен и не обсуждается. Полный исходный код приложения находится в сопроводительных файлах. Приложение называется D3DXCreateMeshFVF.

Кроме того, чтобы облегчить отладку и исследование компонентов сетки, мы реализуем перечисленные ниже функции, которые осуществляют вывод содержимого структур данных сетки в файл:

void dumpVertices(std::ofstream& outFile, ID3DXMesh* mesh); void dumpIndices(std::ofstream& outFile, ID3DXMesh* mesh); void dumpAttributeBuffer(std::ofstream& outFile, ID3DXMesh* mesh); void dumpAdjacencyBuffer(std::ofstream& outFile, ID3DXMesh* mesh); void dumpAttributeTable(std::ofstream& outFile, ID3DXMesh* mesh);

Имена этих функций описывают выполняемые ими действия. Поскольку реализация функций достаточно прямолинейна, мы не будем обсуждать их (посмотрите исходный код в сопроводительных файлах). В качестве примера мы рассмотрим в данном разделе функцию dumpAttributeTable.

Обзор примера мы начнем с объявлений глобальных переменных:

ID3DXMesh* Mesh = 0; const DWORD NumSubsets = 3; IDirect3DTexture9* Textures[3] = {0, 0, 0}; // текстуры для подгрупп std::ofstream OutFile; // используется для вывода данных сетки в файл

Здесь мы объявляем указатель на сетку, которую мы создадим позже. Также мы указываем, что в создаваемой сетке будут три подгруппы. В рассматриваемом примере при визуализации каждой из подгрупп используется отдельная текстура; массив Textures хранит текстуры для каждой подгруппы, причем i-ый элемент массива текстур соответствует i-ой подгруппе сетки.


Содержание  Назад  Вперед