Использование OpenGL

ВВЕДЕНИЕ

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

До недавнего времени считалось, что трёхмерный синтез в реальном времени возможен только под DOS, где программист обладает полной свободой в обращении с аппаратными средствами компьютера. Тем более, невозможно было представить быструю 3D графику в среде Windows с использованием GDI. Каждый программист, занимавшийся 3D графикой, создавал собственную библиотеку, которая, как правило, включала в себя набор функций для работы с примитивами, геометрических преобразований, расчёта освещённости, использования текстур, инициализации графической подсистемы. Как правило, вся обработка информации и подготовка её для вывода на экран, производилась исключительно силами центрального процессора, изредка с использованием арифметического сопроцессора или блока MMX. Но т. к. микропроцессоры до сих пор являются недостаточно быстрыми для реализации интерактивной трёхмерной графики с использованием различных спецэффектов, то не так давно для платформы Intel появилось большое количество акселераторов 3D графики, которые берут на себя большую часть работы, в частности, процесс растеризации.

Специально для использования всех возможностей различных аппаратных конфигураций были спроектированы такие библиотеки, как OpenGL и Direct3D. Обе можно считать низкоуровневыми 3D API, позволяющими создавать высококачественные изображения с высокой скоростью благодаря использованию простых интерфейсов.

Данная работа ставит своей целью описание работы с трёхмерной графикой с помощью библиотеки OpenGL. В работе приведены основные аргументы, послужившие в пользу именно такого выбора. Я стремился рассмотреть некоторые интересные алгоритмы для получения различных спецэффектов: теней, отражений, бликов, тумана (с использованием многопроходного рендеринга), которые могут быть использованы как при работе с библиотекой OpenGL, так и при программировании старших версий Direct3D. Кроме этого, подробно рассмотрен вопрос инициализации библиотеки OpenGL для полноэкранного приложения.