cs.karelia.ru Кафедра Информатики и Математического Обеспечения
Начало
Введение
Обзор OpenGL
Постановка задачи
Текущие результаты
Материалы

Обзор OpenGL

Что такое OpenGL

OpenGL - это программный интерфейс для графических аппаратных средств. Основным его назначением является воспроизведение(rendering) двух- и трехмерных объектов в буфере кадра(frame buffer). Эти объекты описываются в виде набора вершин(задающих геометрические объекты) или пикселей(определяющих изображения). OpenGL выполняет несколько шагов по обработке данных для преобразования их в пиксели, чтобы окончательно сформировать требуемое изображение в буфере кадра.

Примитивы и команды OpenGL

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

Примитивы определяются группой из одной или более вершин. Вершина - это точка, оконечная точка или угол многоугольника. Данные, состоящие из координат вершин, цветов, нормалей, текстурных координат и признаков ребер, относятся к вершине. Каждая вершина и относящиеся кней данные обрабатываются одинаковым образом по порядку независимо друг от друга. Единственным исключением является случай, когда группа вершин должна быть отсечена таким образом, чтобы определенный примитив помещался в пределах определенной области; в этом случае данные вершин могут быть изменены и созданы новые вершины. Тип отсечения зависит от того, какой примитив представляет собой группа вершин.

Команды всегда обрабатываются в том порядке, в каком они получены, хотя может возникнуть неопределенная задержка, прежде чем команда вступит в действие. Это означает, что каждый примитив полностью прорисовывается до вступления в действие любой последующей команды. Это также означает, что команды, стоящие в очереди состояний, возвращают данные, согласующиеся с полным выполнением всех ранее запущенных команд OpenGL.

OpenGL как процедурный язык

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

Запускаемые вами команды OpenGL определяют, как должен быть воспроизведен определенный результат(т.е. какой процедуре следовать), а не то, как должен выглядеть этот результат. Эта процедурная природа поможет вам узнать, как работает OpenGL - порядок, в котором он производит свои опрерации, например, для того, чтобы полностью понимать, как его использовать.

Исполнительная модель OpenGL

OpenGL использует клиент-серверную модель для интерпретации команд. Приложение(клиент) запускает команды, интерпретируемые и обрабатываемые в OpenGL(сервер). Сервер может работатьна том же компьютере, что и клиент, или на отдельном. В этом случае OpenGL является прозрачно сетевым. Сервер может поддерживать несколько контекстов GL, каждый из которых является инкапсулированным GL-состоянием. Клиент может подключиться к любому из этих контекстов. Требуемый сетевой протокол может быть выполнен расширением уже существующего протокола(такого, как оболочка X Window System) или использованием независимого протокола. OpenGL не предоставляет команд для получения пользовательских входных данных.

Петрозаводск – 2006
Valid HTML 4.01! Valid CSS! Yellow Pages HotLog