Рассматриваются организация ввода-вывода с использованием популярных библиотек OpenGL (в том числе и работа с библиотекой glut) и Directlnput, работа с ресурсами (текстурами, моделями и т. п.), реализация ряда специальных эффектов, таких, как системы частиц, блики на линзах, объемный туман и многие другие.
У читателя предполагается знакомство с алгеброй в объеме средней школы, ряд необходимых дополнительных понятий объясняется в приложении. Кроме того, требуется владение языком С++ в объеме, достаточном для понимания классов и работы с ними. Весьма полезным читателю окажется знакомство с приемами объектно-ориентированного программирования и паттернами проектирования.
Для иллюстрации вводимых классов и отношений между ними используются t/A/L-диаграммы.
Исходные тексты всех программ, рассматриваемых в этой книге, вы можете найти на компакт-диске, который можно приобрести в издательстве "Диалог-МИФИ" или скачать в Интернете по адресу www.steps3d.narod.ru. По этому же адресу вы сможете найти примеры сцен и другие полезные ресурсы.
Первая глава книги посвящена работе с координатами в трехмерном пространстве и их преобразованиям. Рассматриваются однородные координаты и их использование для задания преобразований и проектирования. Вводится понятие кватернионов и объясняется их использование для задания ориентации объектов в трехмерном пространстве.
Вторая глава посвящена удалению невидимых поверхностей (определению видимости) в задачах трехмерной компьютерной графики. В ней вводятся основные понятия и рассматриваются как базовые методы (метод трассировки лучей, метод г-буфера, метод художника), так и весьма продвинутые (использование BSP-деревьев, метод порталов, вычисление и использование множеств потенциальновидимых граней).
Третья глава посвящена основным алгоритмам трехмерной графики. В ней рассматривается определение пересечения тел, классификация тел А. В. Боресков. ['рафика трехмерной компьютерной игры
относительно заданной плоскости или пирамиды видимости, использование основных видов ограничивающих тел, методы оптимизации. Все необходимые классы вводятся по ходу изложения.