Введение в 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
Набор базовых примитивов: точки, линии, многоугольники и т.п.
Видовые и координатные преобразования
Удаление невидимых линий и поверхностей (z-буфер)
Использование сплайнов для построения линий и поверхностей
Наложение текстуры и применение освещения
Добавление специальных эффектов: тумана, изменение прозрачности, сопряжение цветов (blending), устранение ступенчатости (anti-aliasing)
Двойная буферизация позволяет устранить мелькание при анимации
Выделение и выбор позволяют пользователю выбирать область экрана или отдельный объект, изображенный на экране.
Растровые примитивы (битмапы и прямоугольники из точек)
На данный момент реализация OpenGL включает в себя несколько библиотек (описание базовых функций OpenGL, GLU, GLUT, GLAUX и другие).
Как мы уже отмечали ранее, OpenGL платформно-независимый стандарт, т.е. в нем отсутствуют команды, которые имеют отношение к системе управления окнами, например - открыть окно, закрыть окно, изменить размеры окна, перерисовать окно, прочитать позицию курсора; также отсутствуют команды связанные с входными устройствами, например – чтение с клавиатуры. Все эти операции сильно зависят от операционной системы. Благодаря Mark J. Kilgard из компании SGI, есть отдельная библиотека, которая призвана решить эту проблему. GLUT (от GL utility toolkit - набор утилит). Эта библиотека обеспечивает единый интерфейс для работы с окнами вне зависимости от платформы, поэтому описываемая ниже структура приложения остается неизменной для операционных систем Windows, Linux и многих других.
Функции GLUT могут быть классифицированы на несколько групп по своему назначению:
Инициализация
Начало обработки событий
Управление окнами
Управление меню
Регистрация вызываемых (callback) функций
Управление индексированной палитрой цветов
Отображение шрифтов
Отображение дополнительных геометрических фигур (тор, конус и др.)
Библиотека 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() использует в качестве параметра указатель на массив из трех вещественных чисел.
Вершины и примитивы. Определение атрибутов вершины
Под вершиной понимается точка в трехмерном пространстве, координаты которой можно задавать следующим образом:
- 1. Векторные дисплеи.
- 2. Растровые дисплеи.
- Программистская модель интерактивной графики
- Лекция 2
- 640X480
- Лекция 4. Анимация
- Лекция 7. Алгоритмы растровой графики. Растровая графика.
- Лекция 9
- Перспективные проекции
- 15.1. Введение
- 15.2. Упрощение сравнений по глубине: перспективное преобразование
- 15.3. Исключение сравнений по глубине. Оболочки
- 15.4. Алгоритм сортировки по глубине
- 15.5. Алгоритм, использующий z-буфер
- 15.6. Алгоритмы построчного сканирования
- 15.7. Алгоритмы разбиения области
- 15.8. Эффективность алгоритма
- 15.9. Алгоритмы для криволинейных поверхностей
- Введение в OpenGl
- Void glVertex[2 3 4][s I f d] (type coords)
- Void glVertex[2 3 4][s I f d]V (type *coords)
- Gl_points каждая вершина задает координаты некоторой точки. Gl_lines каждая отдельная пара вершин определяет отрезок; ес-ли задано нечетное число вершин, то последняя вершина игнорируется.
- Gl_polygon последовательно задаются вершины выпуклог многоугольника.
- OpenGl в Delphi
- Событие. Сообщение. Контекст.