
- •Глава 1. Основы OpenGl 8
- •Введение
- •ОсновыOpenGl
- •Основные возможности
- •ИнтерфейсOpenGl
- •АрхитектураOpenGl
- •Синтаксис команд
- •Пример приложения
- •Контрольные вопросы:
- •Рисование геометрических объектов
- •Процесс обновления изображения
- •Вершины и примитивы
- •Положение вершины в пространстве
- •Цвет вершины
- •Нормаль
- •Операторные скобкиglBegin/glEnd
- •Дисплейные списки
- •Массивы вершин
- •Контрольные вопросы
- •Преобразования объектов
- •Работа с матрицами
- •Модельно-Видовые преобразования
- •Проекции
- •Область вывода
- •Контрольные вопросы
- •Материалы и освещение
- •Модель освещения
- •Спецификация материалов
- •Описание источников света
- •Создание эффекта тумана
- •Контрольные вопросы
- •Текстурирование
- •Подготовка текстуры
- •Наложение текстуры на объекты
- •Текстурные координаты
- •Контрольные вопросы
- •Операции с пикселями
- •Смешивание изображений. Прозрачность
- •Буфер-накопитель
- •Буфер маски
- •Управление растеризацией
- •Приемы работы сOpenGl
- •Устранение ступенчатости
- •Построение теней
- •Зеркальные отражения
- •Оптимизация программ
- •Организация приложения
- •Высокоуровневая оптимизация
- •Низкоуровневая оптимизация
- •Оптимизация вызовов OpenGl
- •Передача данных в OpenGl
- •Преобразования
- •Растеризация
- •Текстурирование
- •Очистка буферов
- •СтруктураGlut-приложения
- •Примитивы библиотекGlUиGlut
- •Настройка приложенийOpenGl
- •Демонстрационные программы
- •Пример 1: Простое glut-приложение
- •Пример 2: Модель освещения OpenGl
- •Пример 3: Текстурирование
- •Примеры практических заданий
- •Виртуальные часы
- •Интерактивный ландшафт
- •Литература
- •Предметный указатель
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ М.В. ЛОМОНОСОВАФАКУЛЬТЕТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И КИБЕРНЕТИКИ
Баяковский Ю.М., Игнатенко А.В., Фролов А.И.
Графическая библиотека OpenGL
методическое пособие
Москва 2002
УДК 681.3
Предисловие
Содержание
Введение 6
Глава 1. Основы OpenGl 8
1.1. Основные возможности 8
1.2. Интерфейс OpenGL 8
1.3. Архитектура OpenGL 10
1.4. Синтаксис команд 12
1.5. Пример приложения 13
Контрольные вопросы: 17
Глава 2. Рисование геометрических объектов 18
2.1. Процесс обновления изображения 18
2.2. Вершины и примитивы 19
2.3. Операторные скобки glBegin / glEnd 21
2.4. Дисплейные списки 25
2.5. Массивы вершин 26
Контрольные вопросы 28
Глава 3. Преобразования объектов 29
3.1. Работа с матрицами 29
3.2. Модельно-Видовые преобразования 31
3.3. Проекции 33
3.4. Область вывода 35
Контрольные вопросы 36
Глава 4. Материалы и освещение 37
4.1. Модель освещения 37
4.2. Спецификация материалов 38
4.3. Описание источников света 40
4.4. Создание эффекта тумана 43
Контрольные вопросы 44
Глава 5. Текстурирование 45
5.1. Подготовка текстуры 45
5.2. Наложение текстуры на объекты 48
5.3. Текстурные координаты 50
Контрольные вопросы 53
Глава 6. Операции с пикселями 54
6.1. Смешивание изображений. Прозрачность 55
6.2. Буфер-накопитель 56
6.3. Буфер маски 58
6.4. Управление растеризацией 59
Глава 7. Приемы работы с OpenGL 61
7.1. Устранение ступенчатости 61
7.2. Построение теней 62
7.3. Зеркальные отражения 67
Глава 8. Оптимизация программ 71
8.1. Организация приложения 71
8.2. Оптимизация вызовов OpenGL 75
Приложение A. Структура GLUT-приложения 84
Приложение A. Примитивы библиотек GLU и GLUT 88
Приложение A. Настройка приложений OpenGL 91
A.1. Создание приложения в среде Borland C++ 5.02 91
A.2. Создание приложения в среде MS Visual C++ 6.0 92
Приложение B. Демонстрационные программы 93
B.1. Пример 1: Простое GLUT-приложение 93
B.2. Пример 2: Модель освещения OpenGL 95
B.3. Пример 3: Текстурирование 99
Приложение C. Примеры практических заданий 106
C.1. Cornell Box 106
C.2. Виртуальные часы 107
C.3. Интерактивный ландшафт 109
Литература 115
Предметный указатель 116
Введение
OpenGL является одним из самых популярных прикладных программных интерфейсов (API – ApplicationProgrammingInterface) для разработки приложений в области двумерной и трехмерной графики.
Стандарт OpenGL (OpenGraphicsLibrary– открытая графическая библиотека) был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения как эффективный аппаратно-независимый интерфейс, пригодный для реализации на различных платформах. Основой стандарта стала библиотека IRIS GL, разработанная фирмой Silicon GraphicsInc.
Библиотека насчитывает около 120 различных команд, которые программист использует для задания объектов и операций, необходимых для написания интерактивных графических приложений.
На сегодняшний день графическая система OpenGLподдерживается большинством производителей аппаратных и программных платформ. Эта система доступна тем, кто работает в средеWindows, пользователям компьютеровApple. Свободно распространяемые коды системыMesa(пакетAPIна базеOpenGL) можно компилировать в большинстве операционных систем, в том числе вLinux.
Характерными особенностями OpenGL, которые обеспечили распространение и развитие этого графического стандарта, являются:
Стабильность. Дополнения и изменения в стандарте реализуются таким образом, чтобы сохранить совместимость с разработанным ранее программным обеспечением.
Надежность и переносимость. Приложения, использующие OpenGL, гарантируют одинаковый визуальный результат вне зависимости от типа используемой операционной системы и организации отображения информации. Кроме того, эти приложения могут выполняться как на персональных компьютерах, так и на рабочих станциях и суперкомпьютерах.
Легкость применения. Стандарт OpenGL имеет продуманную структуру и интуитивно понятный интерфейс, что позволяет с меньшими затратами создавать эффективные приложения, содержащие меньше строк кода, чем с использованием других графических библиотек. Необходимые функции для обеспечения совместимости с различным оборудованием реализованы на уровне библиотеки и значительно упрощают разработку приложений.
Наличие хорошего базового пакета для работы с трехмерными приложениями упрощает понимание студентами ключевых тем курса компьютерной графики – моделирование трехмерных объектов, закрашивание, текстурирование, анимацию и т.д. Широкие функциональные возможности OpenGLслужат хорошим фундаментом для изложения теоретических и практических аспектов предмета.