Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KGMicro.DOC
Скачиваний:
66
Добавлен:
27.05.2013
Размер:
907.78 Кб
Скачать

Введение в OpenGl

OpenGL является на данный момент одним из самых популярных программных интерфейсов (API) для разработки приложений в области двумерной и трехмерной графики. OpenGL - Open Graphics Library, открытая графическая библиотека. Термин "открытый" - означает независимый от производителей. Имеется спецификация (стандарт) на OpenGL, где все четко документировано и описано. Библиотеку OpenGL может производить кто-угодно. Главное, чтобы библиотека удовлетворяла спецификации OpenGL и ряду тестов. Как следствие, в библиотеке нет никаких секретов, недокументированных возможностей и т.п. Библиотеку выпускают такие корпорации, как Microsoft, Silicon Graphics, а также группы программистов. Стандарт OpenGL был разработан и утвержден в 1992 году, а его основой стала библиотека IRIS GL, разработанная Silicon Graphics. В отличие от IRIS GL, OpenGL по своему дизайну является независимой от платформы и операционной системы. Библиотека является сетевой, позволяя выполнять приложение на сервере, а клиенту отображать графику. Благодаря независимости от ОС, сервер и клиент могут работать на разных платформах.

OpenGL поставляется в составе операционной системы Windows, начиная с версии OSR2 в виде двух DLL-файлов - opengl32.dll и glu32.dll. Первая из этих библиотек и есть собственно набор функций OpenGL, вторая содержит дополнительный набор функций, т.е. является надстройкой над OpenGL. Основные возможности OpenGL

  1. Набор базовых примитивов: точки, линии, многоугольники и т.п.

  2. Видовые и координатные преобразования

  3. Удаление невидимых линий и поверхностей (z-буфер)

  4. Использование сплайнов для построения линий и поверхностей

  5. Наложение текстуры и применение освещения

  6. Добавление специальных эффектов: тумана, изменение прозрачности, сопряжение цветов (blending), устранение ступенчатости (anti-aliasing)

  7. Двойная буферизация позволяет устранить мелькание при анимации 

  8. Выделение и выбор позволяют пользователю выбирать область экрана или отдельный объект, изображенный на экране. 

  9. Растровые примитивы (битмапы и прямоугольники из точек) 

На данный момент реализация OpenGL включает в себя несколько библиотек (описание базовых функций OpenGL, GLU, GLUT, GLAUX и другие).

Как мы уже отмечали ранее, OpenGL платформно-независимый стандарт, т.е. в нем отсутствуют команды, которые имеют отношение к системе управления окнами, например - открыть окно, закрыть окно, изменить размеры окна, перерисовать окно, прочитать позицию курсора; также отсутствуют команды связанные с входными устройствами, например – чтение с клавиатуры. Все эти операции сильно зависят от операционной системы. Благодаря Mark J. Kilgard из компании SGI, есть отдельная библиотека, которая призвана решить эту проблему. GLUT (от GL utility toolkit - набор утилит). Эта библиотека обеспечивает единый интерфейс для работы с окнами вне зависимости от платформы, поэтому описываемая ниже структура приложения остается неизменной для операционных систем Windows, Linux и многих других.

Функции GLUT могут быть классифицированы на несколько групп по своему назначению:

  1. Инициализация

  2. Начало обработки событий

  3. Управление окнами

  4. Управление меню

  5. Регистрация вызываемых (callback) функций

  6. Управление индексированной палитрой цветов

  7. Отображение шрифтов

  8. Отображение дополнительных геометрических фигур (тор, конус и др.)

Библиотека GLAUX уступает по популярности написанной несколько позже библиотеке GLUT, хотя они предоставляют примерно одинаковые возможности.

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

Для обеспечения интуитивно понятных названий в OpenGL полное имя команды имеет вид:

type glCommand_name[1 2 3 4][b s i f d ub us ui][v] (type1 arg1,…,typeN argN)

Таким образом, имя состоит из нескольких частей:

gl - это имя библиотеки, в которой описана эта функция: для базовых функций OpenGL, функций из библиотек GLU, GLUT, GLAUX это gl, glu, glut, aux соответственно.

Command_name - имя команды

[1 2 3 4] число аргументов команды

[b s i f d ub us ui] тип аргумента:

символ b означает тип GLbyte (аналог char в С\С++),

символ f – тип GLfloat (аналог float),

символ i – тип GLint (аналог int) и так далее.

Полный список типов и их описание можно посмотреть в файле gl.h

[v] наличие этого символа показывает, что в качестве параметров функции используется указатель на массив значений

Символы в квадратных скобках в некоторых названиях не используются. Например, команда glVertex2i() описана как базовая в библиотеке OpenGL, и использует в качестве параметров два целых числа, а команда glColor3fv() использует в качестве параметра указатель на массив из трех вещественных чисел.

Вершины и примитивы. Определение атрибутов вершины

Под вершиной понимается точка в трехмерном пространстве, координаты которой можно задавать следующим образом: