Открыть сервисСервис

OpenGL — открытая библиотека компьютерной графики

OpenGL (Open Graphics Library) — открытая кроссплатформенная библиотека программного интерфейса (API) для рендеринга двухмерной и трёхмерной компьютерной графики. Используется для вывода векторной и растровой графики на экран посредством вызовов к графическому процессору (GPU). OpenGL разрабатывается группой Khronos Group и применяется в компьютерных играх, САПР-системах, научной визуализации, мобильных приложениях и встраиваемых системах.

История

OpenGL появился в 1992 году как результат стандартизации интерфейса GL (IRIS GL), разработанного компанией Silicon Graphics для своих рабочих станций. Первая версия спецификации была опубликована 1 июня 1992 года. Целью проекта стало создание единого открытого стандарта, доступного разработчикам на разных платформах, в противовес проприетарным решениям отдельных производителей.

До появления OpenGL на рынке доминировали закрытые графические API, привязанные к конкретному оборудованию. OpenGL позволил писать переносимый код, работающий на разных операционных системах — Windows, Linux, macOS и других Unix-подобных системах.

С 2006 года развитие OpenGL контролирует консорциум Khronos Group, в который входят компании NVIDIA, AMD, Intel, ARM, Qualcomm и другие производители графического оборудования и программного обеспечения. До этого библиотекой управляла группа ARB (Architecture Review Board), созданная в 1992 году.

Основные версии

ВерсияГодОсновные изменения
1.01992Первая спецификация, фиксированный конвейер
1.52003Буферы объектов (VBO)
2.02004Поддержка шейдеров GLSL, FBO
3.02008Блочное наследование шейдеров, VAO
3.32010Улучшенная поддержка GLSL 3.30
4.02010Тесселяция, вычислительные шейдеры
4.62017Анизотропная фильтрация, SPIR-V

Начиная с версии 3.0 в OpenGL постепенно устарели устаревшие элементы фиксированного конвейера (fixed-function pipeline), заменённые программируемыми шейдерами. Некоторые устаревшие функции помечены как deprecated, а с версии 3.1 удалены из основного профиля (core profile).

Устройство и принцип работы

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

  • Контекст OpenGL — объект, хранящий состояние рендеринга (настройки, текстуры, буферы). Все вызовы OpenGL выполняются в контексте, привязанном к окну или поверхности.
  • Фиксированный конвейер — классический путь обработки данных, встроенный в драйвер. Программист задаёт параметры (цвет, освещение, текстуры), а конвейер выполняет вычисления. Считается устаревшим.
  • Программируемый конвейер — современный подход, в котором ключевые этапы обработки вершин и фрагментов выполняются шейдерами — программами, написанными на языке GLSL (OpenGL Shading Language) и выполняемыми на GPU.

Типичный конвейер включает: приём вершинных данных, преобразование координат, отсечение, растеризацию, текстурирование, отбор фрагментов и запись в буфер кадра.

Платформенная поддержка

OpenGL поддерживается на Windows, Linux, macOS, FreeBSD и других операционных системах. На мобильных устройствах используется тесно связанная спецификация OpenGL ES (Embedded Systems), оптимизированная для встраиваемых систем и смартфонов. OpenGL ES 2.0 и 3.0 широко применяются в мобильной разработке и веб-браузерах через интерфейс WebGL, основанный на OpenGL ES 2.0.

На macOS Apple долгое время поддерживала только устаревшие версии OpenGL (до 4.1), продвигая собственный Metal. На Windows и Linux актуальные версии OpenGL обеспечиваются драйверами NVIDIA, AMD и Intel.

Альтернативы

Главные альтернативы OpenGL — Vulkan (также от Khronos Group), DirectX от Microsoft и Metal от Apple. Vulkan, представленный в 2016 году, предлагает более низкоуровневый доступ к GPU с меньшими накладными расходами. Несмотря на появление новых API, OpenGL продолжает использоваться в настольных приложениях, САПР, научных инструментах и обучающих материалах благодаря относительной простоте и обширной документации.

Применение

OpenGL применяется в компьютерных играх (особенно инди-проектах и кроссплатформенных движках), системах компьютерного проектирования (AutoCAD, FreeCAD), пакетах 3D-моделирования (Blender), научной визуализации, медицинских системах, авиационных тренажёрах и геоинформационных системах. Библиотеки высокого уровня, такие как GLFW, SDL и GLEW, упрощают создание окон и управление контекстом OpenGL.

Источники

  • Khronos Group. OpenGL Specification.
  • Shreiner D. et al. OpenGL Programming Guide (The Red Book).
  • OpenGL Registry — реестр расширений и спецификаций.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru