WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     || 2 | 3 | 4 | 5 |
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ М.В. ЛОМОНОСОВА ФАКУЛЬТЕТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И КИБЕРНЕТИКИ ЛАБОРАТОРИЯ КОМПЬЮТЕРНОЙ ГРАФИКИ И МУЛЬТИМЕДИА Ю.М. Баяковский, А.В. Игнатенко, А.И. Фролов ГРАФИЧЕСКАЯ БИБЛИОТЕКА OPENGL учебно-методическое пособие Москва 2003 УДК 681.3.07 ББК 32.973.26-018.2 Б34 Баяковский Ю.М., Игнатенко А.В., Фролов А.И. Графическая библиотека OpenGL. Учебно-методическое пособие.

Методическое пособие представляет собой практическое руководство по работе с графической библиотекой OpenGL. Оно включает описание базовых возможностей OpenGL и приемы работы с библиотекой. Рассматриваются вопросы оптимизации приложений.

Пособие рассчитано на читателей, знакомых с языками программирования С/C++ и имеющих представление о базовых алгоритмах компьютерной графики. Рекомендуется студентам, аспирантам, научным сотрудникам.

Рецензенты:

Шикин Е.В., профессор, д.ф.-м.н.

Крылов А.С., к.ф.-м.н.

Издательский отдел факультета Вычислительной Математики и Кибернетики МГУ им. Ломоносова (лицензия НД № 05899 от 24.09.2001), 2003 г. – 132 с.

Печатается по решению Редакционно-Издательского Совета факультета Вычислительной Математики и Кибернетики Московского Государственного Университета им. М.В. Ломоносова.

Факультет Вычислительной © Математики и Кибернетики МГУ им. Ломоносова, 2003 © Лаборатория Компьютерной ISBN 5-89407-153-4 Графики и Мультимедиа, 2003 Содержание Предисловие..................................................................................................6 Введение.........................................................................................................8 Глава 1 Основы OpenGL............................................................................10 1.1. Основные возможности............................................................10 1.2. Интерфейс OpenGL...................................................................1.3. Архитектура OpenGL...............................................................1.4. Синтаксис команд.....................................................................1.5. Пример приложения.................................................................Контрольные вопросы:........................................................................Глава 2 Рисование геометрических объектов.......................................2.1. Процесс обновления изображения.........................................2.2. Вершины и примитивы............................................................2.3. Операторные скобки glBegin / glEnd......................................2.4. Дисплейные списки...................................................................2.5. Массивы вершин.......................................................................Контрольные вопросы.........................................................................Глава 3 Преобразования объектов..........................................................3.1. Работа с матрицами..................................................................3.2. Модельно-видовые преобразования......................................3.3. Проекции.....................................................................................3.4. Область вывода.........................................................................Контрольные вопросы.........................................................................Глава 4 Материалы и освещение............................................................4.1. Модель освещения.................................................................... 4.2. Спецификация материалов.....................................................4.3. Описание источников света....................................................4.4. Создание эффекта тумана........................................................Контрольные вопросы.........................................................................Глава 5 Текстурирование..........................................................................5.1. Подготовка текстуры................................................................5.2. Наложение текстуры на объекты...........................................5.3. Текстурные координаты..........................................................Контрольные вопросы.........................................................................Глава 6 Операции с пикселями................................................................6.1. Смешивание изображений. Прозрачность...........................6.2. Буфер-накопитель.....................................................................6.3. Буфер маски...............................................................................6.4. Управление растеризацией......................................................Контрольные вопросы.........................................................................Глава 7 Приемы работы с OpenGL.........................................................7.1. Устранение ступенчатости......................................................7.2. Построение теней.......................................................................7.3. Зеркальные отражения............................................................Контрольные вопросы.........................................................................Глава 8 Оптимизация программ.............................................................8.1. Организация приложения.......................................................8.2.



Оптимизация вызовов OpenGL..............................................Контрольные вопросы.........................................................................Приложение A. Структура GLUT-приложения..................................Приложение B. Примитивы библиотек GLU и GLUT........................Приложение C. Настройка приложений OpenGL............................... C.1. Создание приложения в среде Borland C++ 5.02..................C.2. Создание приложения в среде MS Visual C++ 6.0................C.3. Создание приложения в среде Borland C++ Builder 6.........Приложение D. Демонстрационные программы...............................D.1. Пример 1: Простое GLUT-приложение...............................D.2. Пример 2: Модель освещения OpenGL..............................D.3. Загрузка BMP файла...............................................................D.4. Пример 3: Текстурирование..................................................Приложение E. Примеры практических заданий..............................E.1. Cornell Box................................................................................E.2. Виртуальные часы..................................................................E.3. Интерактивный ландшафт....................................................Литература..............................................................................................Предметный указатель.......................................................................... Предисловие Мы стали свидетелями драматических изменений, которые произошли в компьютерной графике в 90-е годы. Если в конце 80-х графические рабочие станции стоили безумно дорого и работать с ними могли только в очень богатых организациях (как правило из ВПК), то в конце 90-х графические станции с вполне удовлетворительными возможностями за 1000 USD стали доступны университетам и даже отдельным студентам. Если в 80-е использовалась преимущественно векторная графика, то в конце 90-х растровая полноцветная графика почти полностью вытеснила векторную. Трехмерная графика стала столь же распространенной как двумерная, поскольку появились и быстро совершенствуются видеоплаты с графическими ускорителями и z-буфером.

Параллельно с изменениями графической аппаратуры происходили глубокие метаморфозы в программном обеспечении. Вслед за широким распространением в 70-е годы графических библиотек (в основном векторных, в большинстве своем фортранных) в 80-е годы потребовалось несколько этапов стандартизации графического обеспечения (Core System, PHIGS, GKS), чтобы к середине 90-х прийти к Открытой Графической Библиотеке (OpenGL). В настоящее время многие функции этой библиотеки реализованы аппаратно.

Все эти процессы не могли не сказаться на преподавании компьютерной графики в университетах. В 80-е годы и в первой половине 90-х целью курса было изучение и программирование базовых алгоритмов графики (рисование прямой и кривой, клиппирование, штриховка или растеризация многоугольника, однородные координаты и аффинные преобразования, видовые преобразования) [1,2]. Теперь, при наличии интерфейса прикладного программиста (API) высокого уровня, когда элементарные функции имеются в библиотеке OpenGL и зачастую реализуются аппаратно, пришлось пересмотреть концепцию курса. (В самом деле, зачем учиться умножать столбиком, если у каждого в руках калькулятор.) Появилась возможность включить в курс более сложные и более современные разделы компьютерной графики, такие как текстурирование, анимация.

Именно в соответствии с этой общемировой тенденцией эволюционировал курс компьютерной графики на факультете ВМиК МГУ [3,4].

Следуя принципу "учись, делая" (learning-by-doing), мы, кроме традиционных лекций, включаем в курс выполнение 5-6 небольших проектов, каждый продолжительностью две недели. (Примеры таких заданий вы найдете в этом пособии.) Настоящее пособие призвано помочь студентам в выполнении этих проектов. В отличие от других справочных публикаций по OpenGL, в пособии говориться не о том, что имеется в библиотеке, а о том, как этими средствами эффективно пользоваться. Например, как визуализировать зеркальные объекты, как построить тени. Пособие существует в электронном виде в течение четырех лет на сайте Лаборатории Компьютерной Графики и Мультимедиа (http://graphics.cs.msu.su), и все эти годы оно эволюционирует с учетом потребностей курса.

Авторы благодарны К. Дмитриеву, А. Куликовой и А. Дегтяревой, которые прочитали рукопись и сделали ценные замечания.

Ю.М.Баяковский Декабрь 2002 года Введение OpenGL является одним из самых популярных прикладных программных интерфейсов (API – Application Programming Interface) для разработки приложений в области двумерной и трехмерной графики.

Стандарт OpenGL (Open Graphics Library – открытая графическая библиотека) был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения как эффективный аппаратно-независимый интерфейс, пригодный для реализации на различных платформах. Основой стандарта стала библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc.

Библиотека насчитывает около 120 различных команд, которые программист использует для задания объектов и операций, необходимых для написания интерактивных графических приложений.

На сегодняшний день графическая система OpenGL поддерживается большинством производителей аппаратных и программных платформ.





Эта система доступна тем, кто работает в среде Windows, пользователям компьютеров Apple. Свободно распространяемые коды системы Mesa (пакет API на базе OpenGL) можно компилировать в большинстве операционных систем, в том числе в Linux.

Характерными особенностями OpenGL, которые обеспечили распространение и развитие этого графического стандарта, являются:

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

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

Легкость применения. Стандарт OpenGL имеет продуманную структуру и интуитивно понятный интерфейс, что позволяет с меньшими затратами создавать эффективные приложения, содержащие меньше строк кода, чем с использованием других графических библиотек. Необходимые функции для обеспечения совместимости с различным оборудованием реализованы на уровне библиотеки и значительно упрощают разработку приложений.

Наличие хорошего базового пакета для работы с трехмерными приложениями упрощает понимание студентами ключевых тем курса компьютерной графики – моделирование трехмерных объектов, закрашивание, текстурирование, анимацию и т.д. Широкие функциональные возможности OpenGL служат хорошим фундаментом для изложения теоретических и практических аспектов предмета.

Глава Основы OpenGL 1.1. Основные возможности Описывать возможности OpenGL мы будем через функции его библиотеки. Все функции можно разделить на пять категорий:

Функции описания примитивов определяют объекты нижнего уровня иерархии (примитивы), которые способна отображать графическая подсистема. В OpenGL в качестве примитивов выступают точки, линии, многоугольники и т.д.

Функции описания источников света служат для описания положения и параметров источников света, расположенных в трехмерной сцене.

Функции задания атрибутов. С помощью задания атрибутов программист определяет, как будут выглядеть на экране отображаемые объекты. Другими словами, если с помощью примитивов определяется, что появится на экране, то атрибуты определяют способ вывода на экран. В качестве атрибутов OpenGL позволяет задавать цвет, характеристики материала, текстуры, параметры освещения.

Функции визуализации позволяет задать положение наблюдателя в виртуальном пространстве, параметры объектива камеры. Зная эти параметры, система сможет не только правильно построить изображение, но и отсечь объекты, оказавшиеся вне поля зрения.

Набор функций геометрических преобразований позволяют программисту выполнять различные преобразования объектов – поворот, перенос, масштабирование.

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

1.2. Интерфейс OpenGL OpenGL состоит из набора библиотек. Все базовые функции хранятся в основной библиотеке, для обозначения которой в дальнейшем мы будем использовать аббревиатуру GL. Помимо основной, OpenGL включает в себя несколько дополнительных библиотек.

Первая из них – библиотека утилит GL(GLU – GL Utility). Все функции этой библиотеки определены через базовые функции GL. В состав GLU вошла реализация более сложных функций, таких как набор популярных геометрических примитивов (куб, шар, цилиндр, диск), функции построения сплайнов, реализация дополнительных операций над матрицами и т.п.

GLU GL Буфер Прикладная кадра программа Win32 API GLUT GLX Рис. 1 Организация библиотеки OpenGL OpenGL не включает в себя никаких специальных команд для работы с окнами или ввода информации от пользователя. Поэтому были созданы специальные переносимые библиотеки для обеспечения часто используемых функций взаимодействия с пользователем и для отображения информации с помощью оконной подсистемы. Наиболее популярной является библиотека GLUT (GL Utility Toolkit). Формально GLUT не входит в OpenGL, но de facto включается почти во все его дистрибутивы и имеет реализации для различных платформ. GLUT предоставляет только минимально необходимый набор функций для создания OpenGL-приложения. Функционально аналогичная библиотека GLX менее популярна. В дальнейшем в этом пособии в качестве основной будет рассматриваться GLUT.

Кроме того, функции, специфичные для конкретной оконной подсистемы, обычно входят в ее прикладной программный интерфейс.

Так, функции, поддерживающие выполнение OpenGL, есть в составе Win32 API и X Window. На рисунке схематически представлена организация системы библиотек в версии, работающей под управлением системы Windows. Аналогичная организация используется и в других версиях OpenGL.

1.3. Архитектура OpenGL Функции OpenGL реализованы в модели клиент-сервер. Приложение выступает в роли клиента – оно вырабатывает команды, а сервер OpenGL интерпретирует и выполняет их. Сам сервер может находиться как на том же компьютере, на котором находится клиент (например, в виде динамически загружаемой библиотеки – DLL), так и на другом (при этом может быть использован специальный протокол передачи данных между машинами).

Pages:     || 2 | 3 | 4 | 5 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.