Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Основные возможности. Дополнительные библиотеки.



OpenGL ( Open Graphics Library – открытая графическая библиотека) - это графический стандарт в области компьютерной графики. OpenGL является одним из самых популярных прикладных программных интерфейсов ( API – Application Programmer Interface) для разработки приложений в области двумерной и трехмерной графики.

Стандарт OpenGL был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения (Silicon Graphics, Microsoft, IBM, Sun Microsystems, Digital Equipment Corporation (DEC), Evans & Sutherland, Hewlett-Packard, Intel и Intergraph), как эффективный аппаратно-независимый интерфейс, пригодный для реализации на различных платформах. Основой стандарта стала библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc в 1982.

 

На сегодняшний день графическая система OpenGL поддерживается большинством производителей аппаратных и программных платформ.Характерными особенностями OpenGL, которые обеспечили распространение и развитие этого графического стандарта, являются:

 

· Стабильность. Дополнения и изменения в стандарте реализуются таким образом, чтобы сохранить совместимость с разработанным ранее программным обеспечением.

 

· Надежность и переносимость. Приложения, использующие OpenGL, гарантируют одинаковый визуальный результат вне зависимости от типа используемой операционной системы и организации отображения информации.

 

· Легкость применения. Стандарт OpenGL имеет продуманную структуру и интуитивно понятный интерфейс, что позволяет с меньшими затратами создавать эффективные приложения, содержащие меньше строк кода, чем с использованием других графических библиотек. Необходимые функции для обеспечения совместимости с различным оборудованием реализованы на уровне библиотеки и значительно упрощают разработку приложений.

 

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

Говоря более простым языком вы определяете объекты их местоположение в пространстве (поворот, масштаб, и т.д.) свойства объектов (цвет, текстура, освещенность, и т.д.) положение наблюдателя, а библиотека OpenGL позаботится о том, чтобы всё это отобразить. Поэтому можно сказать, что библиотека OpenGL является только воспроизводящей (визуализирующей), и занимается только отображением заданных объектов, она не работает с устройствами ввода (клавиатуры, мыши) и не поддерживает менеджер окон.

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

Имеется возможность изображать результат не только на локальной машине, но также и по сети. Приложение, которое вырабатывает команды OpenGL, называется клиентом, а приложение, которое получает эти команды и отображает результат - сервером. Таким образом, можно строить очень мощные воспроизводящие комплексы на основе нескольких рабочих станций или серверов, соединённых сетью.

Широкие функциональные возможности OpenGL служат хорошим фундаментом для изложения теоретических и практических аспектов компьютерной графики.

Основные возможности OpenGL

 

Какие же возможности нам представляет OpenGL? Их легко структурировать на категории и описать через функции библиотеки. Итак, функции библиотеки можно разделить на следующие категории:

 

· Функции задания примитивов: определяют простейшие объекты, которые способна отображать графическая подсистема (точки, линии, многоугольники и т.д.).

· Функции задания атрибутов: с помощью задания атрибутов мы определяем, как будут выглядеть на экране отображаемые объекты. В качестве атрибутов можно задавать: цвет, характеристики материала, текстуры, параметры освещения.

· Функции задания и описания источников света: служат для описания положения и параметров источников света.

· Фнкции видовых преобразований: поворот, перенос, масштабирование.

· Дополнительные функции: использование сплайнов для построения линий и поверхностей, удаление невидимых фрагментов изображений, работа с изображениями на уровне пикселей и многое другое.

Дополнительные библиотеки OpenGL

Все базовые функции хранятся в основной библиотеке, для обозначения которой в дальнейшем мы будем использовать сокращенную аббревиатуру GL. Но некоторые из функций, которые требуются при работе с графикой, отсутствуют в стандартной библиотеке GL. Например, чтобы задать положение и направление камеры, с которой будет наблюдаться сцена, нужно самому рассчитывать модельную матрицу, а это далеко не все умеют. Поэтому для GL появились со временем так называемые вспомогательные библиотеки.

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

Следующая библиотека, также широко используемая - это GLUT. Это также независимая от платформы библиотека. Она реализует не только дополнительные функции GL, но и предоставляет функции для работы с окнами, клавиатурой и мышкой. Для того чтобы работать с GL в конкретной операционной системе (например, Windows или Linux ), надо провести некоторую предварительную настройку и эта предварительная настройка зависит от конкретной операционной системы. С библиотекой GLUT всё намного упрощается, буквально несколькими командами можно определить окно, в котором будет работать OpenGL, определить прерывание от клавиатуры или мышки и всё это не будет зависеть от операционной системы. Библиотека предоставляет также некоторые функции, с помощью которых можно определять некоторые сложные фигуры, такие как конусы, тетраэдры, и даже можно с помощью одной команды определить чайник!

Есть ещё одна библиотека похожая на GLUT, называется она GLAUX. Это библиотека разработана фирмой Microsoft для операционной системы Windows. Она во многом схожа с библиотекой GLUT, но немного отстаёт от неё по своим возможностям. И ещё один недостаток заключается в том, что библиотека GLAUX предназначена только для Windows, в то время как GLUT поддерживает очень много операционных систем.

9 OpenGL в Windows. Контексты и их связь. Формат пикселя.

События и контексты

Начнем наш разговор с понятий " событие" и " сообщение". Очень часто это синонимы одного и того же термина ОС общающейся с приложениями посредством посылки сообщений.

Как ОС различает окна для осуществления диалога с ними? Все окна при своем создании регистрируются в операционной системе и получают уникальный идентификатор, называемый " ссылка на окно" (Window Handle). Ссылка на окно может использоваться не только операционной системой, но и приложениями для идентификации окна, с которым необходимо производить манипуляции.

Итак, ссылка на окно однозначно определяет окно. Форма получает значение ссылки при выполнении функции CreateWindow - создании окна. Имея ссылку на окно, операционная система общается с окном путем посылки сообщений-сигналов о том, что произошло какое-либо событие, имеющее отношение именно к этому окну. Если окно имеет намерение отреагировать на это событие, операционная система “имеет это в виду”, и вместе с окном осуществляет эту реакцию.

ОС Windows никогда не выводят элементы изображения непосредственно на экран (или, например, на принтер), а записывают их в логическую сущность, называемую контекстом устройства. Для организации рисования в контексте устройства сначала нужно получить контекст устройства для нужного окна.

Графическая система OpenGL, как и любое другое приложение Windows, также нуждается в ссылке на окно, на котором будет осуществляться воспроизведение - специальной ссылке на контекст воспроизведения - величина типа HGLRC (Handle OpenGL Rendering Context, ссылка на контекст воспроизведения OpenGL). Для получения этого контекста OpenGL нуждается в величине типа HDC (контекст воспроизведения) окна, на который будет осуществляться вывод.

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

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

Наше приложение должно передать серверу требуемые для работы данные - контексты и команды на языке сервера. Также важно понимать, что основную работу выполняет не наше приложение, а сервер. Наше приложение лишь создает окно - платформу для работы сервера, и передает команды серверу.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-03; Просмотров: 726; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.019 с.)
Главная | Случайная страница | Обратная связь