Файл: графическая библиотека opengl.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.06.2020

Просмотров: 1688

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

  6

 
 

Предисловие

 

Мы

 

стали

 

свидетелями

 

драматических

 

изменений

которые

 

произошли

 

в

 

компьютерной

 

графике

 

в

 90-

е

 

годы

Если

 

в

 

конце

 80-

х

 

графические

 

рабочие

 

станции

 

стоили

 

безумно

 

дорого

 

и

 

работать

 

с

 

ними

 

могли

 

только

 

в

 

очень

 

богатых

 

организациях

 (

как

 

правило

 

из

 

ВПК

), 

то

 

в

 

конце

 90-

х

 

графические

 

станции

 

с

 

вполне

 

удовлетворительными

 

возможностями

 

за

 1000 USD 

стали

 

доступны

 

университетам

 

и

 

даже

 

отдельным

 

студентам

Если

 

в

 80-

е

 

использовалась

 

преимущественно

 

векторная

 

графика

то

 

в

 

конце

 90-

х

 

растровая

 

полноцветная

 

графика

 

почти

 

полностью

 

вытеснила

 

векторную

Трехмерная

 

графика

 

стала

 

столь

 

же

 

распространенной

 

как

 

двумерная

поскольку

 

появились

 

и

 

быстро

 

совершенствуются

 

видеоплаты

 

с

 

графическими

 

ускорителями

 

и

 

z-

буфером

.  

Параллельно

 

с

 

изменениями

 

графической

 

аппаратуры

 

происходили

 

глубокие

 

метаморфозы

 

в

 

программном

 

обеспечении

Вслед

 

за

 

широким

 

распространением

 

в

 70-

е

 

годы

 

графических

 

библиотек

  (

в

 

основном

 

векторных

в

 

большинстве

 

своем

 

фортранных

в

 80-

е

 

годы

 

потребовалось

 

несколько

 

этапов

 

стандартизации

 

графического

 

обеспечения

 (Core System, PHIGS, GKS), 

чтобы

 

к

 

середине

 90-

х

 

прийти

 

к

 

Открытой

 

Графической

 

Библиотеке

 (OpenGL). 

В

 

настоящее

 

время

 

многие

 

функции

 

этой

 

библиотеки

 

реализованы

 

аппаратно

Все

 

эти

 

процессы

 

не

 

могли

 

не

 

сказаться

 

на

 

преподавании

 

компьютерной

 

графики

 

в

 

университетах

В

 80-

е

 

годы

 

и

 

в

 

первой

 

половине

 90-

х

   

целью

 

курса

 

было

 

изучение

 

и

 

программирование

 

базовых

 

алгоритмов

 

графики

  (

рисование

 

прямой

 

и

 

кривой

клиппирование

штриховка

 

или

 

растеризация

 

многоугольника

однородные

 

координаты

 

и

 

аффинные

 

преобразования

видовые

 

преобразования

) [1,2]. 

Теперь

при

 

наличии

 

интерфейса

 

прикладного

 

программиста

 (API) 

высокого

 

уровня

когда

 

элементарные

 

функции

 

имеются

 

в

 

библиотеке

 OpenGL 

и

 

зачастую

 

реализуются

 

аппаратно

пришлось

 

пересмотреть

 

концепцию

 

курса

. (

В

 

самом

 

деле

зачем

 

учиться

 

умножать

 

столбиком

если

 

у

 

каждого

 

в

 

руках

 

калькулятор

.) 

Появилась

 

возможность

 

включить

 

в

 

курс

 

более

 

сложные

 

и

 

более

 

современные

 

разделы

 

компьютерной

 

графики

такие

 

как

 

текстурирование

анимация

Именно

 

в

 

соответствии

 

с

 

этой

 

общемировой

 

тенденцией

 


background image

  7

эволюционировал

 

курс

 

компьютерной

 

графики

 

на

 

факультете

 

ВМиК

 

МГУ

 [3,4]. 

Следуя

 

принципу

  "

учись

делая

" (learning-by-doing), 

мы

кроме

 

традиционных

 

лекций

,  

включаем

 

в

 

курс

 

выполнение

 5-6 

небольших

 

проектов

каждый

 

продолжительностью

 

две

 

недели

. (

Примеры

 

таких

 

заданий

 

вы

 

найдете

 

в

 

этом

 

пособии

.) 

Настоящее

 

пособие

 

призвано

 

помочь

 

студентам

 

в

 

выполнении

 

этих

 

проектов

В

 

отличие

 

от

 

других

 

справочных

 

публикаций

 

по

 OpenGL, 

в

 

пособии

 

говориться

 

не

 

о

 

том

что

 

имеется

 

в

 

библиотеке

а

 

о

 

том

как

 

этими

 

средствами

 

эффективно

 

пользоваться

Например

как

 

визуализировать

 

зеркальные

 

объекты

как

 

построить

 

тени

Пособие

 

существует

 

в

 

электронном

 

виде

 

в

 

течение

 

четырех

 

лет

 

на

 

сайте

 

Лаборатории

 

Компьютерной

 

Графики

 

и

 

Мультимедиа

 (http://graphics.cs.msu.su), 

и

 

все

 

эти

 

годы

 

оно

 

эволюционирует

 

с

 

учетом

 

потребностей

 

курса

Авторы

 

благодарны

 

К

Дмитриеву

А

Куликовой

 

и

 

А

Дегтяревой

которые

 

прочитали

 

рукопись

 

и

 

сделали

 

ценные

 

замечания

.  

 

Ю

.

М

.

Баяковский

 

Декабрь

 2002 

года

 


background image

  8

Введение

 

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 

имеет

 

продуманную

 

структуру

 

и

 

интуитивно

 

понятный

 

интерфейс

что

 

позволяет

 

с

 

меньшими

 

затратами

 

создавать

 

эффективные

 

приложения


background image

  9

содержащие

 

меньше

 

строк

 

кода

чем

 

с

 

использованием

 

других

 

графических

 

библиотек

Необходимые

 

функции

 

для

 

обеспечения

 

совместимости

 

с

 

различным

 

оборудованием

 

реализованы

 

на

 

уровне

 

библиотеки

 

и

 

значительно

 

упрощают

 

разработку

 

приложений

Наличие

 

хорошего

 

базового

 

пакета

 

для

 

работы

 

с

 

трехмерными

 

приложениями

 

упрощает

 

понимание

 

студентами

 

ключевых

 

тем

 

курса

 

компьютерной

 

графики

 – 

моделирование

 

трехмерных

 

объектов

закрашивание

текстурирование

анимацию

 

и

 

т

.

д

Широкие

 

функциональные

 

возможности

 OpenGL 

служат

 

хорошим

 

фундаментом

 

для

 

изложения

 

теоретических

 

и

 

практических

 

аспектов

 

предмета


background image

 10

Глава

 1  

 

Основы

 OpenGL 

1.1. 

Основные

 

возможности

 

 

Описывать

 

возможности

 OpenGL 

мы

 

будем

 

через

 

функции

 

его

 

библиотеки

Все

 

функции

 

можно

 

разделить

 

на

 

пять

 

категорий

 

Функции

 

описания

 

примитивов

 

определяют

 

объекты

 

нижнего

 

уровня

 

иерархии

  (

примитивы

), 

которые

 

способна

 

отображать

 

графическая

 

подсистема

В

 OpenGL 

в

 

качестве

 

примитивов

 

выступают

 

точки

линии

многоугольники

 

и

 

т

.

д

 

Функции

 

описания

 

источников

 

света

 

служат

 

для

 

описания

 

положения

 

и

 

параметров

 

источников

 

света

расположенных

 

в

 

трехмерной

 

сцене

 

Функции

 

задания

 

атрибуто

в

С

 

помощью

 

задания

 

атрибутов

 

программист

 

определяет

как

 

будут

 

выглядеть

 

на

 

экране

 

отображаемые

 

объекты

Другими

 

словами

если

 

с

 

помощью

 

примитивов

 

определяется

что

 

появится

 

на

 

экране

то

 

атрибуты

 

определяют

 

способ

 

вывода

 

на

 

экран

В

 

качестве

 

атрибутов

 OpenGL 

позволяет

 

задавать

 

цвет

характеристики

 

материала

текстуры

параметры

 

освещения

 

Функции

 

визуализации

 

позволяет

 

задать

 

положение

 

наблюдателя

 

в

 

виртуальном

 

пространстве

параметры

 

объектива

 

камеры

Зная

 

эти

 

параметры

система

 

сможет

 

не

 

только

 

правильно

 

построить

 

изображение

но

 

и

 

отсечь

 

объекты

оказавшиеся

 

вне

 

поля

 

зрения

 

Набор

 

функций

 

геометрических

 

преобразований

 

позволяют

 

программисту

 

выполнять

 

различные

 

преобразования

 

объектов

 

– 

поворот

перенос

масштабирование

При

 

этом

 OpenGL 

может

 

выполнять

 

дополнительные

 

операции

такие

 

как

 

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

 

сплайнов

 

для

 

построения

 

линий

 

и