ОБЗОР СПЕЦИФИКАЦИИ OPENGL Ковтунов Д.С. Email: [email protected]
Ковтунов Дмитрий Сергеевич - студент, кафедра космических информационных систем, Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Московский технологический университет, г. Москва
Аннотация: в данной статье рассматривается спецификация, определяющая независимый от платформы и языка программирования программный интерфейс, предназначенный для написания приложений, использующих двумерную и трёхмерную компьютерную графику - спецификация OpenGL. Эта спецификация находит широкое применение при создании систем автоматизированного проектирования, виртуальной реальности, визуализации в научных исследованиях. В статье также дается характеристика функций OpenGL и рассматривается организация библиотек, приводятся примеры синтаксиса.
Ключевые слова: OpenGL, функции, примитивы, библиотеки OpenGL.
THE OPENGL SPECIFICATION REVIEW Kovtunov D.S.
Kovtunov Dmitry Sergeevich - Student, SPACE INFORMATION SYSTEMS DEPARTMENT,
FEDERAL STATE BUDGET EDUCATIONAL INSTITUTION OF HIGHER PROFESSIONAL EDUCATION MOSCOW TECHNOLOGICAL UNIVERSITY, MOSCOW
Abstract: this article considers a specification that defines independent of platforms and programming languages programming interface, which is intended for application creating with two-dimensional and three-dimensional graphics - the OpenGL specification. This specification is widely used in creating of rnmputer-aided designs, virtual reality systems and visualization of scientific research. This article also gives characteristics of functions OpenGL. Moreover, this article contains a libraries structure of OpenGL and gives examples of syntax.
Keywords: OpenGL, functions, primitives, libraries of OpenGL.
УДК 004.94
Одним из самых популярных прикладных программных интерфейсов для разработки в области двумерной и трехмерной графики является OpenGL (Open Graphics Library).
Библиотека в своем составе имеет 120 разных команд. Данные команды программист использует для написания интерактивных графических приложений. На сегодняшний день OpenGL поддерживается большинством производителей программных платформ.
К основным характеристикам OpenGL относят:
- надежность и переносимость. В независимости от того какую операционную систему используют визуальный результат одинаков. Приложения можно запустить не только на персональном компьютере, но и на рабочих станциях;
- стабильность. Если программист использует дополнения, то стандарт сохраняет совместимость с разработанным программным обеспечением;
- легкость применения. OpenGL имеет легкую и продуманную структуру. Это позволяет эффективно использовать приложения без дополнительных затрат.
Для того, чтобы разобраться в возможностях OpenGL, необходимо рассмотреть его функции. Функции OpenGL принято делить на 5 категорий:
1. Функция описания примитивов. Данная функция определяет, какие объекты нижнего уровня (примитивы) способна отражать графическая подсистема. В качестве примитивов в OpenGL используют линии, точки и т.д.
2. Функция описания источников света. Предназначена для описания параметров источника света, которые расположены в трехмерной сцене.
3. Функция задания атрибутов. Атрибуты позволяют понять программисту как будет расположен объект на экране.
4. Функция визуализации задает положение в виртуальном пространстве, параметры объектива камеры. Если система знает данные параметры, она не только правильно построит изображение, но и отсечет ненужные объекты.
5. Набор функций геометрических преобразований. Используется программистом для поворота, масштабирования и переноса объектов.
OpenGL в том числе использует дополнительные операции. Например, сплайны, использующиеся в построении линий поверхностей.
В состав OpenGL входит набор библиотек. Базовые функции хранятся в основной библиотеке.
Помимо основной библиотеки в состав OpenGL входит и ряд дополнительных библиотек. Организация библиотек OpenGL представлена на рисунке 1.
Рис. 1. Организация библиотек OpenGL
Первая библиотека носит название-библиотека утилит GL (GLU-GL Utility). Данная библиотека содержит основные базовые функции GL. GLU имеет более сложные функции, например, сложные геометрические примитивы (диск, цилиндр, шар и куб) и т.д.
Эксплуатация OpenGL не включает в состав специальных команд по работе с окнами или ввод информации. Для этого были созданы специальные дополнительные библиотеки. Одной из самых популярных переносных библиотек является GLUT (GL Utility Toolkit). GLUT включен во все дистрибутивы OpenGL и реализован для разных платформ.
Состав GLUT минимален и включает в себя необходимый набор для создания OpenGL-приложения. Если рассматривать библиотеку GLX, которая функционально идентична, то среди программистов она менее популярна [4, c. 65].
Все представленные функции OpenGL реализованы в модели клиент-сервер. Сервер OpenGL выполняет команды, которые вырабатывает приложение, выступающее в роли клиента. Сервер при этом может находится как на том же клиенте, так и на другом. Если сервер находится на другом компьютере, то используется специальный протокол для передачи данных между несколькими машинами.
GL с учетом выбранных режимов рисует в буфере кадра графические примитивы. Если рассматривать каждый примитив отдельности, то это отрезок, многоугольник, точки и прочие. Режимы могут быть изменены они не зависят друг от друга. Для того, чтобы выбрать режим или определить примитив необходимо использовать команду в форме вызовов функций прикладной библиотеке.
Вершинами (vertex) определяются примитивы. Вершина определяет точку, конец отрезка или угол многоугольника [1, с. 12]. Данные (координаты, цвет и т.д.) ассоциируются с каждой вершиной - их называют атрибутами.
Если рассматривать систему OpenGL в качестве архитектуры, то она является конвейером, состоящая из нескольких этапов обработки графических данных [3]. Функционирование конвейера представлено на рисунке 2.
Рис. 2. Функционирование конвейера OpenGL
Обработка команд в OpenGL происходит порядке очереди, в том числе могут происходить и задержки перед появлением эффекта.
OpenGL можно назвать прослойкой, которая находится между уровнем пользователя и аппаратурой.
Все определения команд хранятся в файле gl.h. Для его включения необходимо прописать специальную команду: #include <gl/gl.h>. Аналогично включается и библиотека GLU (для работы необходимо включить файле gl.h. Пакет GLUT инсталлируется и подключается отдельно [2].
Команды библиотеки необходимо начинать с префикса gl, консатнты - GL_. Соответствующие команды и константы библиотек GLU и GLUT аналогично имеют префиксы glu (GLU_) и glut (GLUT_).
Кроме того, в имена команд входят суффиксы, несущие информацию о числе и типе передаваемых параметров.
Большим достоинством OpenGL является независимость большинства команд. Например, чтобы отключить наложение текстуры, достаточно закомментировать вызов функции TextureInit(), а чтобы получить статичное изображение, достаточно не регистрировать функцию обновления изображения вызовом функции glutIdleFunc(). В
этом случае можно использовать режим с одним буфером, заменив GL_DOUBLE на GL_SINGLE в команде glutInitDisplayMode() и добавив команду glFlush() в конце процедуры Display() для очистки этого буфера.
OpenGL является одним из универсальных и удобных средств, помогающее в работе с двумерным и трехмерным пространством. Удобство и простота данного прикладного интерфейса сделало его на сегодняшний день одним из популярных среди аналогов.
Список литературы /References
1. Баяковский Ю.М.Графическая библиотека OpenGL / Ю.М. Баяковский, А.В. Игнатенко, А.И. Фролов. Издательский отдел факультета вычислительной математики и кибернетики МГУ им. Ломоносова, 2003. 132 с.
2. The OpenGL graphics system: a specification (version 1.1).
3. OpenGL и directx: архитектура, производительность, сравнение. [Электронный ресурс]. Режим доступа: https://helpsnet.ru/opengl-i-directx-arxitektura-proizvoditelnost-sravnenie/ (дата обращения: 19.04.2018).
4. Шрайнер Д. OpenGL. Руководство по программированию / Д. Шрайнер, Дж. Нейдер, Т. Девис. Питер, 2012. 624 с.
ОБЗОР ПРИКЛАДНОГО ПРОГРАММНОГО ИНТЕРФЕЙСА
WEBGL
Ковтунов Д.С. Email: [email protected]
Ковтунов Дмитрий Сергеевич - студент, кафедра космических информационных систем, Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Московский технологический университет, г. Москва
Аннотация: в данной статье приведен общий обзор программной библиотеки, позволяющей создавать интерактивную 3D -графику для широкого спектра браузеров, - библиотеки WebGL. Основными вопросами, рассматриваемыми в данной статье, являются способы работы в WebGL. Также исследована терминология библиотеки, раскрыто понятие шейдера. Кроме того, рассмотрены способы получения данных шейдером, а также описаны компоненты, которые используют при работе в библиотеке 3D -графики. Раскрыты основные преимущества данной библиотеки.
Ключевые слова: WebGL, 3D-графика, шейдер, объекты, JavaScript, программирование.
REVIEW OF THE WEBGL APPLICATION PROGRAMMING
INTERFACE Kovtunov D.S.
1Kovtunov Dmitry Sergeevich - Student, SPACE INFORMATION SYSTEMS DEPARTMENT, FEDERAL STATE BUDGET EDUCATIONAL INSTITUTION OF HIGHER EDUCATION MOSCOW TECHNOLOGICAL UNIVERSITY, MOSCOW
Abstract: this article considers a general review of a program library that allows to create an interactive 3D-graphics for a wide range of browsers - the WebGL library. Main points