Главная » Все файлы » Просмотр файлов из архивов » Документы » Ю.М. Баяковский, А.В. Игнатенко - Начальный курс OpenGL (DOC)

Ю.М. Баяковский, А.В. Игнатенко - Начальный курс OpenGL (DOC)

2019-05-11СтудИзба

Описание файла

Документ из архива "Ю.М. Баяковский, А.В. Игнатенко - Начальный курс OpenGL (DOC)", который расположен в категории "". Всё это находится в предмете "инженерная графика" из 5 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "Ю.М. Баяковский, А.В. Игнатенко - Начальный курс OpenGL (DOC)"

Текст из документа "Ю.М. Баяковский, А.В. Игнатенко - Начальный курс OpenGL (DOC)"

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ М.В. ЛОМОНОСОВА


ФАКУЛЬТЕТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И КИБЕРНЕТИКИ

ЛАБОРАТОРИЯ КОМПЬЮТЕРНОЙ ГРАФИКИ И МУЛЬТИМЕДИА

ш

Ю.М. Баяковский, А.В. Игнатенко

НАЧАЛЬНЫЙ КУРС OPENGL


планета знаний


i

ПЛАНЕТА ЗНАНИИ

Москва 2007

УДК 681.3.07

ББК 32.973.26-018.2 Б34

Банковский Ю.М., Игнатенко А.В. Начальный курс OpenGL. М.: „Планета Знаний", 2007.— 221с.

ISBN 978-5-903242-02-3

Настоящая книга представляет собой практическое руководство по ра­боте с графической библиотекой OpenGL. Руководство разработано с учетом опыта чтения курса «Компьютерная графика» на факультете ВМиК МГУ им. М.В. Ломоносова. Книга включает в себя описание базовых возможно­стей OpenGL и приемы работы с библиотекой, вопросы оптимизации при­ложений и использования OpenGL в различных средах программирования. Книга снабжена вопросами и практическими заданиями.

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

Издание подготовлено в рамках образовательной программы «Форми­рование системы инновационного образования в МГУ».

Рецензенты:

Шикин Е.В., профессор, доктор физ.-мат. наук, ф-т ВМиК МГУ Крылов А.С., кандидат физ.-мат. наук, ф-т ВМиК МГУ

ISBN 978-5-903242-02-3

© Банковский Ю.М., Игнатенко А.В. © ООО „Планета Знаний", 2007

Оглавление

Предисловие 7

Введение 11

I Основы OpenGL 15

1. Графический процесс и OpenGL 17

  1. Графический процесс 17

  2. Геометрические модели 19

  3. Анимация 20

  4. Материалы 21

  5. Освещение 22

  6. Виртуальная камера 22

  7. Алгоритм экранизации 23

2. Введение в OpenGL 25

  1. Основные возможности 25

  2. Интерфейс OpenGL 26

  3. Архитектура OpenGL 28

  4. Синтаксис команд 30

  5. Пример приложения 31

  6. Контрольные вопросы 36

3

4 Оглавление

3. Рисование геометрических объектов 39

  1. Процесс обновления изображения 39

  2. Вершины и примитивы 41

  3. Операторные скобки glBegin / glEnd 43

  4. Дисплейные списки 47

  5. Массивы вершин 49

  6. Контрольные вопросы 51

4. Преобразования объектов 55

  1. Работа с матрицами 56

  2. Модельно-видовые преобразования 58

  3. Проекции 60

  4. Область вывода 63

  5. Контрольные вопросы 64

5. Материалы и освещение 65

  1. Модель освещения 65

  2. Спецификация материалов 67

  3. Описание источников света 69

  4. Создание эффекта тумана 73

  5. Контрольные вопросы 74

6. Текстурирование 77

  1. Подготовка текстуры 77

  2. Наложение текстуры на объекты 81

  3. Текстурные координаты 84

  4. Контрольные вопросы 87

7. Операции с пикселями 89

  1. Смешивание изображений и прозрачность 90

  2. Буфер-накопитель 93

  3. Буфер маски 94

  4. Управление растеризацией 96

  5. Контрольные вопросы 98

Оглавление 5

II Приемы работы с OpenGL 99

8. Графические алгоритмы на основе OpenGL 101

  1. Устранение ступенчатости 101

  2. Построение теней 103

  3. Зеркальные отражения 109

  4. Контрольные вопросы 113

9. Оптимизация программ 115

  1. Организация приложения 115

  2. Оптимизация вызовов OpenGL 120

  3. Контрольные вопросы 128

III Создание приложений с OpenGL 131

lO.OpenGL-приложения с помощью GLUT 133

  1. Структура GLUT-приложения 133

  2. GLUT в среде Microsoft Visual C++ 6.0 137

  3. GLUT в среде Microsoft Visual C++ 2005 139

  4. GLUT в среде Borland C++ Builder 6 140

  5. GLUT в среде Borland C++ Builder 2006 141

11.Использование OpenGL в MFC и VCL 145

  1. Контекст устройства 146

  2. Установка формата пикселей 147

  3. Контекст рисования (render context) 148

  4. Класс GLRC 149

  5. Использование OpenGL с MFC 150

  6. Использование OpenGL с VCL 153

12.OpenGL в .NET 157

  1. GLUT в среде Microsoft Visual C# 2005 157

  2. Использование OpenGL в WindowsForms 160

6 Оглавление

IV Приложения 163

A. Примитивы библиотек GLU и GLUT 165

Б. Демонстрационные программы 169

Б.1. Пример 1: Простое GLUT-приложение 169

Б.2. Пример 2: Модель освещения OpenGL 173

Б.З. Загрузка BMP файла 178

Б.4. Пример 3: Текстурирование и анимация 186

Б.5. Класс для работы с OpenGL в Win32 195

B. Примеры практических заданий 201

B.l. Cornell Box 201

  1. Виртуальные часы 204

  2. Интерактивный ландшафт 206

Литература 215

Предметный указатель 217

Предисловие

Компьютерная (машинная) графика очень молодая дисци­плина. Появление машинной графики как научно-исследователь­ского направления обычно связывают с именем Айвена Сазер-ленда (Ivan Sutherland), который в 1963 г. опубликовал статью с результатами своей диссертационной работы. В 1967 г. была образована профессиональная группа АСМ SIGGRAPH. В ран­ний период развития машинной графики ассоциация SIGGRAPH развивалась как научно-техническая организация. В 1983 г. был сформирован Комитет SIGGRAPH по образованию для совер­шенствования обучения машинной графике и использования ее в учебном процессе.

Мы стали свидетелями драматических изменений, которые произошли в компьютерной графике в 1990-е годы. Если в кон­це 80-х графические рабочие станции стоили безумно дорого и работать с ними могли только в очень богатых организациях (как правило из ВПК), то в конце 1990-х графические станции с вполне удовлетворительными возможностями за 1000 USD ста­ли доступны университетам и даже отдельным студентам. Если в 1980-е использовалась преимущественно векторная графика, то в конце 1990-х растровая полноцветная графика почти пол­ностью вытеснила векторную. Трехмерная графика стала столь же распространенной, как двухмерная, поскольку появились и быстро совершенствуются видеоплаты с графическими ускори-

7

8

Оглавление

телями и z-буфером.

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

Все эти процессы не могли не сказаться на преподавании компьютерной графики в университетах. Однако, даже в США до конца 1970-х годов машинная графика оставалась необыч­ным предметом среди университетских курсов. В учебных пла­нах АСМ 1978 г. машинная графика отсутствовала. В 1980-е го­ды и в первой половине 1990-х целью курса было изучение и про­граммирование базовых алгоритмов графики (рисование прямой и кривой, клиппирование, штриховка или растеризация много­угольника, однородные координаты и аффинные преобразова­ния, видовые преобразования) [1, 2]. Теперь, при наличии интер­фейса прикладного программирования (API) высокого уровня, когда элементарные функции имеются в библиотеке OpenGL и зачастую реализуются аппаратно, пришлось пересмотреть кон­цепцию курса. В самом деле, зачем учиться умножать столби­ком, если у каждого в руках калькулятор. Появилась возмож­ность включить в курс более сложные и более современные раз­делы компьютерной графики, такие как текстурирование, ани­мация. Именно в соответствии с этой общемировой тенденцией эволюционировал курс компьютерной графики на факультете ВМиК МГУ (с 1999 г. интернет-версию курса можно найти на сайте http://courses.graphicon.ru).

Следуя принципу "учись, делая"(learning-by-doing), мы, кро­ме традиционных лекций, включаем в курс выполнение 5-6 неболь-

Оглавление

9

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

Моделируя реальную рабочую среду, мы учим студентов са­мостоятельной работе. В этих условиях пособие по использова­нию открытой графической библиотеки играет важную роль.

Авторы благодарны Е. Костиковой и К. Каштановой за по­мощь в подготовке текста и иллюстраций.

Ю.М. Банковский Апрель 2007 года

Введение

Все, что мы видим на экране компьютерного монитора, яв­ляется результатом работы алгоритмов синтеза изображений. Эти алгоритмы решают такие задачи, как визуализация тек­ста с использованием заданного набор шрифтов, отображение указателя курсора, рисование вспомогательных элементов гра­фического интерфейса, визуализацию изображений. Кроме это­го, алгоритмы синтеза решают задачи визуализации трехмерных данных, например, с целью создания интерактивной фотореали­стичной анимации, либо для наглядного представления резуль­татов каких-либо вычислений.

Для облегчения выполнения программистами таких задач еще в 80-х годах 20-го века стали появляться программные ин­струментарии (библиотеки), содержащие в себе наборы базо­вых алгоритмов (таких, как визуализация простых геометриче­ских объектов), что позволило перейти на более высокий уро­вень абстракции при решении прикладных задач. В настоящее время программирование графических алгоритмов немыслимо без использования специальных программных инструментариев, также называемых прикладными программными интерфейсами (API — Application Programming Interface).

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

11

12

Оглавление

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

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

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

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

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

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

Оглавление

13

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

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

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее