Научная статья на тему 'Обзор спецификации OpenGL'

Обзор спецификации OpenGL Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
643
85
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
OPENGL / ФУНКЦИИ / FUNCTIONS / ПРИМИТИВЫ / PRIMITIVES / БИБЛИОТЕКИ OPENGL / LIBRARIES OF OPENGL

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Ковтунов Дмитрий Сергеевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Обзор спецификации OpenGL»

ОБЗОР СПЕЦИФИКАЦИИ 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

i Надоели баннеры? Вы всегда можете отключить рекламу.