ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.06.2020
Просмотров: 1688
Скачиваний: 4
6
Предисловие
Мы
стали
свидетелями
драматических
изменений
,
которые
произошли
в
компьютерной
графике
в
90-
е
годы
.
Если
в
конце
80-
х
графические
рабочие
станции
стоили
безумно
дорого
и
работать
с
ними
могли
только
в
очень
богатых
организациях
(
как
правило
из
ВПК
),
то
в
конце
90-
х
графические
станции
с
вполне
удовлетворительными
возможностями
за
1000 USD
стали
доступны
университетам
и
даже
отдельным
студентам
.
Если
в
80-
е
использовалась
преимущественно
векторная
графика
,
то
в
конце
90-
х
растровая
полноцветная
графика
почти
полностью
вытеснила
векторную
.
Трехмерная
графика
стала
столь
же
распространенной
как
двумерная
,
поскольку
появились
и
быстро
совершенствуются
видеоплаты
с
графическими
ускорителями
и
z-
буфером
.
Параллельно
с
изменениями
графической
аппаратуры
происходили
глубокие
метаморфозы
в
программном
обеспечении
.
Вслед
за
широким
распространением
в
70-
е
годы
графических
библиотек
(
в
основном
векторных
,
в
большинстве
своем
фортранных
)
в
80-
е
годы
потребовалось
несколько
этапов
стандартизации
графического
обеспечения
(Core System, PHIGS, GKS),
чтобы
к
середине
90-
х
прийти
к
Открытой
Графической
Библиотеке
(OpenGL).
В
настоящее
время
многие
функции
этой
библиотеки
реализованы
аппаратно
.
Все
эти
процессы
не
могли
не
сказаться
на
преподавании
компьютерной
графики
в
университетах
.
В
80-
е
годы
и
в
первой
половине
90-
х
целью
курса
было
изучение
и
программирование
базовых
алгоритмов
графики
(
рисование
прямой
и
кривой
,
клиппирование
,
штриховка
или
растеризация
многоугольника
,
однородные
координаты
и
аффинные
преобразования
,
видовые
преобразования
) [1,2].
Теперь
,
при
наличии
интерфейса
прикладного
программиста
(API)
высокого
уровня
,
когда
элементарные
функции
имеются
в
библиотеке
OpenGL
и
зачастую
реализуются
аппаратно
,
пришлось
пересмотреть
концепцию
курса
. (
В
самом
деле
,
зачем
учиться
умножать
столбиком
,
если
у
каждого
в
руках
калькулятор
.)
Появилась
возможность
включить
в
курс
более
сложные
и
более
современные
разделы
компьютерной
графики
,
такие
как
текстурирование
,
анимация
.
Именно
в
соответствии
с
этой
общемировой
тенденцией
7
эволюционировал
курс
компьютерной
графики
на
факультете
ВМиК
МГУ
[3,4].
Следуя
принципу
"
учись
,
делая
" (learning-by-doing),
мы
,
кроме
традиционных
лекций
,
включаем
в
курс
выполнение
5-6
небольших
проектов
,
каждый
продолжительностью
две
недели
. (
Примеры
таких
заданий
вы
найдете
в
этом
пособии
.)
Настоящее
пособие
призвано
помочь
студентам
в
выполнении
этих
проектов
.
В
отличие
от
других
справочных
публикаций
по
OpenGL,
в
пособии
говориться
не
о
том
,
что
имеется
в
библиотеке
,
а
о
том
,
как
этими
средствами
эффективно
пользоваться
.
Например
,
как
визуализировать
зеркальные
объекты
,
как
построить
тени
.
Пособие
существует
в
электронном
виде
в
течение
четырех
лет
на
сайте
Лаборатории
Компьютерной
Графики
и
Мультимедиа
(http://graphics.cs.msu.su),
и
все
эти
годы
оно
эволюционирует
с
учетом
потребностей
курса
.
Авторы
благодарны
К
.
Дмитриеву
,
А
.
Куликовой
и
А
.
Дегтяревой
,
которые
прочитали
рукопись
и
сделали
ценные
замечания
.
Ю
.
М
.
Баяковский
Декабрь
2002
года
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
имеет
продуманную
структуру
и
интуитивно
понятный
интерфейс
,
что
позволяет
с
меньшими
затратами
создавать
эффективные
приложения
,
9
содержащие
меньше
строк
кода
,
чем
с
использованием
других
графических
библиотек
.
Необходимые
функции
для
обеспечения
совместимости
с
различным
оборудованием
реализованы
на
уровне
библиотеки
и
значительно
упрощают
разработку
приложений
.
Наличие
хорошего
базового
пакета
для
работы
с
трехмерными
приложениями
упрощает
понимание
студентами
ключевых
тем
курса
компьютерной
графики
–
моделирование
трехмерных
объектов
,
закрашивание
,
текстурирование
,
анимацию
и
т
.
д
.
Широкие
функциональные
возможности
OpenGL
служат
хорошим
фундаментом
для
изложения
теоретических
и
практических
аспектов
предмета
.
10
Глава
1
Основы
OpenGL
1.1.
Основные
возможности
Описывать
возможности
OpenGL
мы
будем
через
функции
его
библиотеки
.
Все
функции
можно
разделить
на
пять
категорий
:
Функции
описания
примитивов
определяют
объекты
нижнего
уровня
иерархии
(
примитивы
),
которые
способна
отображать
графическая
подсистема
.
В
OpenGL
в
качестве
примитивов
выступают
точки
,
линии
,
многоугольники
и
т
.
д
.
Функции
описания
источников
света
служат
для
описания
положения
и
параметров
источников
света
,
расположенных
в
трехмерной
сцене
.
Функции
задания
атрибуто
в
.
С
помощью
задания
атрибутов
программист
определяет
,
как
будут
выглядеть
на
экране
отображаемые
объекты
.
Другими
словами
,
если
с
помощью
примитивов
определяется
,
что
появится
на
экране
,
то
атрибуты
определяют
способ
вывода
на
экран
.
В
качестве
атрибутов
OpenGL
позволяет
задавать
цвет
,
характеристики
материала
,
текстуры
,
параметры
освещения
.
Функции
визуализации
позволяет
задать
положение
наблюдателя
в
виртуальном
пространстве
,
параметры
объектива
камеры
.
Зная
эти
параметры
,
система
сможет
не
только
правильно
построить
изображение
,
но
и
отсечь
объекты
,
оказавшиеся
вне
поля
зрения
.
Набор
функций
геометрических
преобразований
позволяют
программисту
выполнять
различные
преобразования
объектов
–
поворот
,
перенос
,
масштабирование
.
При
этом
OpenGL
может
выполнять
дополнительные
операции
,
такие
как
использование
сплайнов
для
построения
линий
и