OpenGL - OpenGL
Оригинальный автор (ы) | Силиконовая Графика |
---|---|
Разработчики) | Хронос Групп (ранее ARB ) |
изначальный выпуск | 30 июня 1992 г. |
Стабильный выпуск | 4.6 / 31 июля 2017 г. |
Написано в | C[1] |
Тип | 3D графика API |
Лицензия |
|
Интернет сайт | opengl |
OpenGL (Открытая графическая библиотека[3]) это кросс-языковой, кросс-платформенный интерфейс прикладного программирования (API) для рендеринга 2D и 3D векторная графика. API обычно используется для взаимодействия с графический процессор (GPU), чтобы достичь с аппаратным ускорением рендеринг.
Silicon Graphics, Inc. (SGI) начала разработку OpenGL в 1991 году и выпустила его 30 июня 1992 года;[4][5] приложения широко используют его в областях системы автоматизированного проектирования (CAD), виртуальная реальность, научная визуализация, визуализация информации, моделирование полета, и видеоигры. С 2006 года OpenGL находится под управлением некоммерческий технологии консорциум Хронос Групп.
Дизайн
Спецификация OpenGL описывает абстрактное API для рисования 2D и 3D графики. Хотя API может быть реализован полностью в программном обеспечении, он предназначен для большей или полной реализации. в оборудовании.
API определяется как набор функции который может быть вызван клиентской программой вместе с набором именованные целочисленные константы (например, константа GL_TEXTURE_2D, которая соответствует десятичный номер 3553). Хотя определения функций внешне похожи на определения языка программирования C, они не зависят от языка. Таким образом, OpenGL имеет много языковые привязки, наиболее примечательными из которых являются JavaScript привязка WebGL (API, на основе OpenGL ES 2.0, для 3D-рендеринга из веб-браузер ); привязки C WGL, GLX и CGL; привязка C, предоставляемая iOS; и Ява и привязки C, предоставляемые Android.
OpenGL не только не зависит от языка, но и является кроссплатформенным. В спецификации ничего не говорится о получении и управлении контекстом OpenGL, оставляя это как деталь базового оконная система. По той же причине OpenGL занимается исключительно рендерингом, не предоставляя API, связанных с вводом, звуком или управлением окнами.
Разработка
OpenGL - это развивающийся API. Новые версии спецификаций OpenGL регулярно выпускаются Хронос Групп, каждый из которых расширяет API для поддержки различных новых функций. Детали каждой версии определяются консенсусом между участниками Группы, включая производителей видеокарт, разработчиков операционных систем и общие технологические компании, такие как Mozilla и Google.[6]
В дополнение к функциям, необходимым для основного API, графический процессор Поставщики (GPU) могут предоставлять дополнительные функции в виде расширения. Расширения могут вводить новые функции и новые константы, а также могут ослаблять или снимать ограничения на существующие функции OpenGL. Поставщики могут использовать расширения для предоставления пользовательских API-интерфейсов без необходимости поддержки со стороны других поставщиков или Khronos Group в целом, что значительно увеличивает гибкость OpenGL. Все расширения собраны в реестре OpenGL и определены им.[7]
Каждое расширение связано с коротким идентификатором, основанным на названии компании, которая его разработала. Например, Nvidia идентификатор - NV, который является частью имени расширения. GL_NV_half_float
, постоянная GL_HALF_FLOAT_NV
, а функция glVertex2hNV ()
.[8] Если несколько поставщиков соглашаются реализовать одну и ту же функциональность с использованием одного и того же API, может быть выпущено общее расширение с использованием идентификатора EXT. В таких случаях также может случиться так, что Совет по анализу архитектуры Khronos Group даст расширению свое явное одобрение, и в этом случае используется идентификатор ARB.[9]
Функции, представленные каждой новой версией OpenGL, обычно формируются из объединенных функций нескольких широко используемых расширений, особенно расширений типа ARB или EXT.
Документация
Совет по обзору архитектуры OpenGL выпустил серию руководств вместе со спецификациями, которые были обновлены для отслеживания изменений в API. Их обычно называют по цвету обложек:
- Красная книга
- Руководство по программированию OpenGL, 9-е издание. ISBN 978-0-134-49549-1
- Официальное руководство по изучению OpenGL, версия 4.5 с SPIR-V
- Оранжевая книга
- OpenGL Shading Language, 3-е издание. ISBN 0-321-63763-1
- Учебник и справочник для GLSL.
Исторические книги (до OpenGL 2.0):
- Зеленая книга
- Программирование OpenGL для системы X Window. ISBN 978-0-201-48359-8
- Книга о взаимодействии с X11 и Набор инструментов OpenGL Utility (GLUT).
- Синяя книга
- Справочное руководство OpenGL, 4-е издание. ISBN 0-321-17383-X
- По сути, это распечатка бумажной копии Руководство по Unix (man) страницы для OpenGL.
- Включает развернутую диаграмму размером с плакат, показывающую структуру идеализированной реализации OpenGL.
- Альфа-книга (белая обложка)
- Программирование OpenGL для Windows 95 и Windows NT. ISBN 0-201-40709-4
- Книга о взаимодействии OpenGL с Microsoft Windows.
Связанные библиотеки
Самые ранние версии OpenGL были выпущены с сопутствующей библиотекой под названием Библиотека утилит OpenGL (GLU). Он предоставлял простые и полезные функции, которые вряд ли будут поддерживаться современным оборудованием, например мозаика, и генерируя MIP-карты и примитивные формы. Спецификация GLU последний раз обновлялась в 1998 году и зависит от функций OpenGL, которые сейчас устарел.
Наборы контекстных и оконных инструментов
Учитывая, что создание контекста OpenGL - довольно сложный процесс, и учитывая, что он варьируется от операционные системы, автоматическое создание контекста OpenGL стало общей чертой нескольких разработчиков игр и пользовательских интерфейсов. библиотеки, включая SDL, Аллегро, SFML, ФЛТК, и Qt. Несколько библиотек были разработаны исключительно для создания окна с поддержкой OpenGL. Первая такая библиотека была Набор инструментов OpenGL Utility (GLUT), позже замененный глоток. GLFW это более новая альтернатива.[10]
- Эти наборы инструментов предназначены для создания окон OpenGL и управления ими, а также для управления вводом, но не более того.[11]
- GLFW - Кроссплатформенное управление окнами и клавиатурой-мышью-джойстиком; более игровой
- глоток - Кроссплатформенный обработчик окон и клавиатуры-мыши; его API - это надмножество GLUT API, и он более стабилен и актуален, чем GLUT.
- Набор инструментов OpenGL Utility (GLUT) - старый обработчик окон, больше не обслуживаемый.
- Несколько "мультимедийных библиотек" могут создавать окна OpenGL, помимо ввода, звука и других задач, полезных для игровых приложений.
- Аллегро 5 - Кросс-платформенная мультимедийная библиотека с C API, ориентированная на разработку игр.
- Простой слой DirectMedia (SDL) - кроссплатформенная мультимедийная библиотека с C API
- SFML - Кросс-платформенная мультимедийная библиотека с C ++ API и множеством других привязок к таким языкам, как C #, Java, Haskell и Go.
- Наборы инструментов для виджетов
- ФЛТК - Небольшая кроссплатформенная библиотека виджетов C ++
- Qt - Кросс-платформенный инструментарий виджетов C ++. Он предоставляет множество вспомогательных объектов OpenGL, которые даже абстрагируют разницу между настольным GL и OpenGL ES.
- wxWidgets - Кросс-платформенный инструментарий виджетов C ++
Библиотеки загрузки расширений
Учитывая высокую рабочую нагрузку, связанную с идентификацией и загрузкой расширений OpenGL, было разработано несколько библиотек, которые автоматически загружают все доступные расширения и функции. Примеры включают GLEE, GLEW и сверкающий. Расширения также загружаются автоматически большинством языковых привязок, например JOGL и PyOpenGL.
Реализации
Меса 3D является Открытый исходный код реализация OpenGL. Он может выполнять чистый программный рендеринг, а также может использовать аппаратное ускорение на BSD, Linux, и другие платформы, воспользовавшись Инфраструктура прямого рендеринга. Начиная с версии 20.0, он реализует версию 4.6 стандарта OpenGL.
История
В 1980-х годах разработка программного обеспечения, которое могло бы работать с широким спектром графического оборудования, была настоящей проблемой. Разработчики программного обеспечения написали пользовательские интерфейсы и драйверы для каждой части оборудования. Это было дорого и привело к увеличению усилий.
К началу 1990-х гг. Силиконовая Графика (SGI) была лидером в области 3D-графики для рабочих станций. Их ИРИС GL API[12] считался самым современным[нужна цитата ] и стал де-факто отраслевым стандартом, вытеснив основанные на открытых стандартах ФИГС. Это произошло потому, что IRIS GL считался более простым в использовании, и потому что он поддерживал немедленный режим рендеринг. Напротив, PHIGS считался сложным в использовании и устаревшим по функциональности.
Конкуренты SGI (в том числе Sun Microsystems, Hewlett Packard и IBM ) также смогли вывести на рынок 3D-оборудование, поддерживаемое расширениями стандарта PHIGS, что вынудило SGI открыть исходный код версии IrisGL в качестве общедоступного стандарта под названием OpenGL.
Однако у SGI было много клиентов, для которых переход с IrisGL на OpenGL потребовал значительных инвестиций. Более того, в IrisGL были функции API, которые не имели отношения к трехмерной графике. Например, он включал API окон, клавиатуры и мыши, отчасти потому, что он был разработан до X Window System и Солнца Новости. И библиотеки IrisGL не подходили для открытия из-за проблем с лицензированием и патентами.[требуется дальнейшее объяснение ]. Эти факторы потребовали от SGI продолжать поддерживать передовые и проприетарные Ирис Изобретатель и Ирис исполнитель API программирования, в то время как рыночная поддержка OpenGL стала более зрелой.
Одним из ограничений IrisGL было то, что он предоставлял доступ только к функциям, поддерживаемым базовым оборудованием. Если графическое оборудование не поддерживает функцию изначально, приложение не может ее использовать. OpenGL преодолел эту проблему, предоставив программную реализацию функций, не поддерживаемых аппаратным обеспечением, что позволило приложениям использовать расширенную графику на относительно маломощных системах. Стандартизированный доступ OpenGL к оборудованию, выдвинул ответственность за разработку программ аппаратного интерфейса (драйверы устройств ) производителям оборудования и делегировал оконные функции базовой операционной системе. Благодаря такому большому количеству различных видов графического оборудования заставить их всех говорить на одном языке таким образом было замечательное влияние, предоставив разработчикам программного обеспечения платформу более высокого уровня для разработки программного обеспечения для 3D.
В 1992 г.[13] SGI возглавил создание Совет по обзору архитектуры OpenGL (OpenGL ARB), группа компаний, которая будет поддерживать и расширять спецификацию OpenGL в будущем.
В 1994 году SGI обдумывала идею выпустить нечто под названием "OpenGL ++ "который включает такие элементы, как API графа сцены (предположительно на основе их Исполнитель технологии). Спецификация была распространена среди нескольких заинтересованных сторон, но так и не превратилась в продукт.[14]
Microsoft вышел Direct3D в 1995 году, который в итоге стал основным конкурентом OpenGL. Более 50 разработчиков игр подписали Открой письмо в Microsoft, выпущенный 12 июня 1997 года, призывающий компанию активно поддерживать Open GL.[15] 17 декабря 1997 г.[16] Microsoft и SGI инициировали Фаренгейт проект, который был совместным усилием с целью унификации интерфейсов OpenGL и Direct3D (а также добавления API графа сцены). В 1998 году к проекту присоединилась Hewlett-Packard.[17] Первоначально он обещал упорядочить мир интерактивных 3D-интерфейсов компьютерной графики, но из-за финансовых ограничений SGI, стратегических соображений Microsoft и общего отсутствия поддержки со стороны отрасли в 1999 году от него отказались.[18]
В июле 2006 г. Совет по обзору архитектуры OpenGL проголосовал за передачу контроля над стандартом API OpenGL группе Khronos.[19][20]
В июне 2018 г. яблоко устаревшие API OpenGL на всех своих платформах (iOS, macOS и tvOS ), настоятельно рекомендуя разработчикам использовать свои проприетарные Металл API, который был представлен в 2014 году.[21]
История версий
Первая версия OpenGL, версия 1.0, была выпущена 30 июня 1992 года Марком Сигалом и Курт Экли. С тех пор OpenGL время от времени расширялся за счет выпуска новой версии спецификации. Такие выпуски определяют базовый набор функций, которые должны поддерживать все соответствующие видеокарты, и для которых будет легче писать новые расширения. Каждая новая версия OpenGL имеет тенденцию включать несколько расширений, которые широко поддерживаются поставщиками видеокарт, хотя детали этих расширений могут быть изменены.
Версия | Дата выхода | Функции |
---|---|---|
1.1 | 4 марта 1997 г. | Текстурные объекты |
1.2 | 16 марта 1998 г. | 3D текстуры, BGRA и упакованный пиксель форматы,[22] введение подмножество изображений полезен для приложений обработки изображений |
1.2.1 | 14 октября 1998 г. | Концепция расширений ARB |
1.3 | 14 августа 2001 г. | Мультитекстурирование, мультисэмплинг, сжатие текстур |
1.4 | 24 июля 2002 г. | Текстуры глубины, GLSlang[23] |
1.5 | 29 июля 2003 г. | Объект буфера вершин (VBO), запросы окклюзии[24] |
2.0 | 7 сентября 2004 г. | GLSL 1.1, MRT, Текстуры без силы двух, Точечные спрайты,[25] Двусторонний трафарет[24] |
2.1 | 2 июля 2006 г. | GLSL 1.2, объект пиксельного буфера (PBO), текстуры sRGB[24] |
3.0 | 11 августа 2008 г. | GLSL 1.3, массивы текстур, условный рендеринг, объект буфера кадра (FBO)[26] |
3.1 | 24 марта 2009 г. | GLSL 1.4, создание экземпляров, объект буфера текстуры, объект унифицированного буфера, перезапуск примитива[27] |
3.2 | 3 августа 2009 г. | GLSL 1.5, шейдер геометрии, текстуры с множественной выборкой[28] |
3.3 | 11 марта 2010 г. | GLSL 3.30, Backports как можно больше функций из спецификации OpenGL 4.0 |
4.0 | 11 марта 2010 г. | GLSL 4.00, тесселяция на GPU, шейдеры с 64-битной точностью[29] |
4.1 | 26 июля 2010 г. | GLSL 4.10, удобные для разработчиков выходные данные отладки, совместимость с OpenGL ES 2.0[30] |
4.2 | 8 августа 2011 г.[31] | GLSL 4.20, шейдеры с атомарными счетчиками, инстансы обратной связи с преобразованием отрисовки, упаковка шейдеров, улучшения производительности |
4.3 | 6 августа 2012 г.[32] | GLSL 4.30, Вычислительные шейдеры с использованием параллелизма графического процессора, буферные объекты хранилища шейдеров, высококачественное сжатие текстур ETC2 / EAC, повышенная безопасность памяти, расширение надежности для нескольких приложений, совместимость с OpenGL ES 3.0[33] |
4.4 | 22 июля 2013 г.[34] | GLSL 4.40, управление размещением буфера, эффективные асинхронные запросы, макет переменной шейдера, эффективное связывание нескольких объектов, упрощенный перенос приложений Direct3D, расширение без привязки текстур, расширение разреженных текстур[34] |
4.5 | 11 августа 2014 г.[7][35] | GLSL 4.50, прямой доступ к состоянию (DSA), управление сбросом, надежность, API OpenGL ES 3.1 и совместимость с шейдерами, функции эмуляции DX11 |
4.6 | 31 июля 2017 г.[36][37] | GLSL 4.60, более эффективная обработка геометрии и выполнение шейдеров, дополнительная информация, отсутствие контекста ошибок, ограничение смещения полигона, SPIR-V, анизотропная фильтрация |
OpenGL 2.0
Дата выхода: 7 сентября 2004 г.
OpenGL 2.0 изначально был разработан 3Dlabs чтобы устранить опасения, что OpenGL не работает и не имеет четкого направления.[38] 3Dlabs предложила ряд важных дополнений к стандарту. Большинство из них были в то время отклонены ARB или по иным причинам так и не были реализованы в той форме, которую предлагала 3Dlabs. Однако их предложение о языке затенения в стиле C было в конечном итоге завершено, в результате чего была разработана текущая формулировка языка затенения OpenGL (GLSL или GLslang). Подобно ассемблерным языкам затенения, которые он заменял, он позволял заменять вершину с фиксированной функцией и канал фрагмента на шейдеры, хотя на этот раз написано на языке высокого уровня типа C.
Конструкция GLSL отличалась относительно небольшим количеством уступок доступным тогда аппаратным средствам. Это восходит к более ранней традиции OpenGL, которая ставила амбициозную, дальновидную цель для 3D-ускорителей, а не просто отслеживала состояние доступного в настоящее время оборудования. Окончательная спецификация OpenGL 2.0[39] включает поддержку GLSL.
Longs Peak и OpenGL 3.0
Перед выпуском OpenGL 3.0 новая редакция имела кодовое имя Пик Лонга. На момент своего первоначального объявления Longs Peak был представлен как первая крупная версия API за все время существования OpenGL. Он заключался в пересмотре способа работы OpenGL и внесении фундаментальных изменений в API.
В проекте внесены изменения в управление объектами. Объектная модель GL 2.1 была построена на основе архитектуры OpenGL. То есть, чтобы изменить объект или использовать его, нужно привязать объект к системе состояний, а затем внести изменения в состояние или выполнить вызовы функций, которые используют связанный объект.
Из-за того, что OpenGL использует систему состояний, объекты должны быть изменяемыми. То есть базовая структура объекта может измениться в любое время, даже если конвейер рендеринга асинхронно использует этот объект. Объект текстуры можно переопределить с 2D на 3D. Для этого требуется, чтобы любые реализации OpenGL добавляли степень сложности к внутреннему управлению объектами.
В соответствии с API Longs Peak создание объекта станет атомный, используя шаблоны для определения свойств объекта, который будет создан с помощью одного вызова функции. Затем объект можно было сразу использовать в нескольких потоках. Объекты также будут неизменными; однако их содержимое могло быть изменено и обновлено. Например, текстура может изменить свое изображение, но ее размер и формат не могут быть изменены.
Для поддержки обратной совместимости старый API на основе состояний по-прежнему будет доступен, но новые функции не будут доступны через старый API в более поздних версиях OpenGL. Это позволило бы использовать устаревшие кодовые базы, такие как большинство CAD продукты, чтобы продолжать работать, в то время как другое программное обеспечение может быть написано или перенесено на новый API.
Первоначально Longs Peak должен был быть завершен в сентябре 2007 года под названием OpenGL 3.0, но 30 октября Khronos Group объявила, что столкнулась с несколькими проблемами, которые она хотела бы решить перед выпуском спецификации.[40] В результате спецификация была отложена, и Khronos Group перешла на отключение СМИ до выпуска окончательной спецификации OpenGL 3.0.
Окончательная спецификация оказалась гораздо менее революционной, чем предложение Longs Peak. Вместо того, чтобы удалить весь немедленный режим и фиксированные функции (не шейдерный режим), спецификация включила их как устаревшие функции. Предложенная объектная модель не была включена, и не было объявлено о планах ее включения в какие-либо будущие версии. В результате API остался в основном прежним, а несколько существующих расширений были переведены на основные функции.
Среди некоторых групп разработчиков это решение вызвало бурю негодования,[41] многие разработчики заявляют, что перейдут на DirectX в знак протеста. Большинство жалоб касались отсутствия связи со стороны Khronos с сообществом разработчиков и отказа от множества функций, которые многие положительно оценили. Другие разочарования включали требование оборудования уровня DirectX 10 для использования OpenGL 3.0 и отсутствие геометрических шейдеров и инстансов рендеринга в качестве основных функций.
Другие источники сообщили, что реакция сообщества была не такой суровой, как первоначально представлялось,[42] со многими поставщиками, показывающими поддержку обновления.[43][44]
OpenGL 3.0
Дата выхода: 11 августа 2008 г.
OpenGL 3.0 представил механизм устаревания, чтобы упростить будущие версии API. Некоторые функции, отмеченные как устаревшие, можно полностью отключить, запросив прямой совместимый контекст из оконной системы. К функциям OpenGL 3.0 по-прежнему можно было получить доступ вместе с этими устаревшими функциями, однако, запросив полный контекст.
К устаревшим функциям относятся:
- Вся обработка вершин и фрагментов с фиксированными функциями
- Рендеринг в прямом режиме с использованием glBegin и glEnd
- Списки отображения
- Цели рендеринга с индексированным цветом
- Язык шейдинга OpenGL версии 1.10 и 1.20
OpenGL 3.1
Дата выхода: 24 марта 2009 г.
OpenGL 3.1 полностью удалил все функции, которые были объявлены устаревшими в версии 3.0, за исключением широких строк. Начиная с этой версии, невозможно получить доступ к новым функциям с помощью полный контекстили для доступа к устаревшим функциям с помощью прямой совместимый контекст. Исключение из первого правила делается, если реализация поддерживает ARB_compatibility расширение, но это не гарантируется.
OpenGL 3.2
Дата выхода: 3 августа 2009 г.
OpenGL 3.2 дополнительно построен на механизмах устаревания, представленных OpenGL 3.0, путем разделения спецификации на основной профиль и профиль совместимости. Контексты совместимости включают ранее удаленные API фиксированных функций, эквивалентные расширению ARB_compatibility, выпущенному вместе с OpenGL 3.1, в то время как основные контексты этого не делают. OpenGL 3.2 также включает обновление до GLSL версии 1.50.
OpenGL 4.0
Дата выхода: 11 марта 2010 г.
OpenGL 4.0 был выпущен вместе с версией 3.3. Он был разработан для оборудования, способного поддерживать Direct3D 11.
Как и в OpenGL 3.0, эта версия OpenGL содержит большое количество довольно несущественных расширений, разработанных для того, чтобы полностью раскрыть возможности оборудования Direct3D 11-класса. Ниже перечислены только самые влиятельные расширения.
Аппаратная поддержка: Nvidia GeForce 400 серии и новее, AMD Radeon HD 5000 серии и новее (шейдеры FP64, реализованные путем эмуляции на некоторых графических процессорах TeraScale), Intel HD Графика в Intel Ivy Bridge процессоры и новее.[45]
OpenGL 4.1
Дата выхода: 26 июля 2010 г.
Аппаратная поддержка: Nvidia GeForce 400 серии и новее, AMD Radeon HD 5000 серии и новее (шейдеры FP64, реализованные путем эмуляции на некоторых графических процессорах TeraScale), Intel HD Графика в Intel Ivy Bridge процессоры и новее.[45]
- Минимальный «максимальный размер текстуры» составляет 16 384 × 16 384 для графических процессоров, реализующих эту спецификацию.[46]
OpenGL 4.2
Дата выхода: 8 августа 2011 г.[31]
- Поддержка шейдеров с атомарными счетчиками и операций чтения-изменения-записи load-store-atomic для одного уровня текстуры
- Рисование нескольких экземпляров данных, захваченных в результате обработки вершин графического процессора (включая тесселяцию), чтобы обеспечить эффективное перемещение и репликацию сложных объектов
- Поддержка изменения произвольного подмножества сжатой текстуры без повторной загрузки всей текстуры в графический процессор для значительного повышения производительности.
Аппаратная поддержка: Nvidia GeForce 400 серии и новее, AMD Radeon HD 5000 серии и новее (шейдеры FP64, реализованные путем эмуляции на некоторых графических процессорах TeraScale), и Intel HD Графика в Intel Haswell процессоры и новее.[45] (Linux Mesa: Ivy Bridge и новее)
OpenGL 4.3
Дата выхода: 6 августа 2012 г.[32]
- Вычислить шейдеры использование параллелизма GPU в контексте графического конвейера
- Буферные объекты хранилища шейдеров, позволяющие шейдерам читать и записывать буферные объекты, такие как загрузка / сохранение изображений из версии 4.2, но через язык, а не вызовы функций.
- Запросы параметров формата изображения
- ETC2 / EAC сжатие текстур как стандартная функция
- Полная совместимость с OpenGL ES 3.0 API
- Возможность отладки для получения отладочных сообщений во время разработки приложения
- Представления текстур для различной интерпретации текстур без репликации данных.
- Повышенная безопасность памяти и надежность работы с несколькими приложениями
Аппаратная поддержка: AMD Radeon HD 5000 серии и новее (шейдеры FP64, реализованные путем эмуляции на некоторых графических процессорах TeraScale), Intel HD Графика в Intel Haswell процессоры и новее.[45] (Linux Mesa: Ivy Bridge без текстурирования трафаретов, Haswell и новее), Nvidia GeForce 400 серии и новее.
OpenGL 4.4
Дата выхода: 22 июля 2013 г.[34]
- Принудительный контроль использования объекта буфера
- Асинхронные запросы к буферным объектам
- Выражение дополнительных элементов управления макетом переменных интерфейса в шейдерах
- Эффективное связывание нескольких объектов одновременно
Аппаратная поддержка: AMD Radeon HD 5000 серии и новее (шейдеры FP64, реализованные путем эмуляции на некоторых графических процессорах TeraScale), Intel HD Графика в Intel Broadwell процессоры и новее (Linux Mesa: Haswell и новее),[47] Nvidia GeForce 400 серии и новее,[48] Тегра К1.
OpenGL 4.5
Дата выхода: 11 августа 2014 г.[7][35]
- Прямой доступ к состоянию (DSA) - средства доступа к объектам позволяют запрашивать и изменять состояние без привязки объектов к контекстам для повышения эффективности и гибкости приложений и промежуточного программного обеспечения.[49]
- Flush Control - приложения могут управлять сбросом ожидающих команд перед переключением контекста, что обеспечивает высокопроизводительные многопоточные приложения;
- Надежность - обеспечение безопасной платформы для приложений, таких как браузеры WebGL, включая предотвращение сброса графического процессора, влияющего на любые другие запущенные приложения;
- API OpenGL ES 3.1 и совместимость с шейдерами - для облегчения разработки и выполнения последних приложений OpenGL ES на настольных системах.
Аппаратная поддержка: AMD Radeon HD 5000 серии и новее (шейдеры FP64, реализованные путем эмуляции на некоторых графических процессорах TeraScale), Intel HD Графика в Intel Broadwell процессоры и новее (Linux Mesa: Haswell и новее), Nvidia GeForce 400 серии и новее,[48] Тегра К1, и Tegra X1.[50][51]
OpenGL 4.6
Дата выхода: 31 июля 2017 г.[7][36][37]
- более эффективный, на стороне GPU, обработка геометрии
- более эффективным шейдер исполнение (AZDO )
- больше информации через статистику, запрос переполнения и счетчики
- более высокая производительность благодаря отсутствию контекстов обработки ошибок
- зажим из многоугольник функция смещения, решает проблему рендеринга теней
- СПИР-В шейдеры
- Улучшенный Анизотропная фильтрация
Аппаратная поддержка: AMD Radeon HD 5000 серии и новее (шейдеры FP64, реализованные путем эмуляции на некоторых графических процессорах TeraScale), Intel Haswell и новее, Nvidia GeForce 400 серии и новее.[48]
Поддержка драйверов:
- Меса 19,2 г. Linux поддерживает OpenGL 4.6 для Intel Broadwell и новее.[52] Mesa 20.0 поддерживает графические процессоры AMD Radeon,[53] пока продолжается поддержка Nvidia Kepler +.
- AMD Графический драйвер Adrenalin 18.4.1 включен Windows 7 SP1, 10 версия 1803 (обновление за апрель 2018 г.) для AMD Radeon ™ HD 7700+, HD 8500+ и новее. Выпущено в апреле 2018 г.[54][55]
- Intel 26.20.100.6861 графический драйвер на Windows 10. Выпущено в мае 2019 г.[56][57]
- NVIDIA GeForce 397.31 Графический драйвер включен Windows 7, 8, 10 x86-64 только немного, нет 32-битный поддерживать. Дата выпуска: апрель 2018 г.[58]
Альтернативные реализации
яблоко устарел OpenGL в iOS 12 и macOS 10.14 Mojave в пользу Металл, но он по-прежнему работает с macOS 10.15. Последней поддерживаемой для OpenGL версией является 4.1 с 2011 года.[59][60] Собственная библиотека от Molten - авторов MoltenVK - называется MoltenGL, может переводить вызовы OpenGL в Metal.[61]
Mesa3D, графическая библиотека с открытым исходным кодом, включает Цинк драйвер для преобразования вызовов OpenGL в вызовы Vulkan, чтобы устройства, работающие только с Vulkan, могли обрабатывать настольный OpenGL.[62]
Вулкан
Vulkan, ранее называвшийся «Инициатива OpenGL следующего поколения» (glNext),[63][64] представляет собой основательную попытку редизайна для унификации OpenGL и OpenGL ES в один общий API, который не будет обратно совместим с существующими версиями OpenGL.[65][66][67]
Первоначальная версия Vulkan API была выпущена 16 февраля 2016 года.
Смотрите также
- Язык ассемблера ARB - Устаревший низкоуровневый язык затенения OpenGL
- Сравнение OpenGL и Direct3D
- Direct3D - главный конкурент OpenGL
- Glide API - графический API, когда-то использовавшийся на картах 3dfx Voodoo
- Список приложений OpenGL
- Металл (API) - графический API для iOS, macOS, tvOS, watchOS
- OpenAL - кроссплатформенная аудио библиотека, напоминающая OpenGL
- OpenGL ES - OpenGL для встраиваемых систем
- OpenSL ES - API для звука во встроенных системах, разработанный Khronos Group
- OpenVG - API для ускоренной 2D-графики, разработанный Khronos Group
- Спецификация интерфейса RenderMan (RISpec) - Открытый API Pixar для фотореалистичного автономного рендеринга
- ВОГЛ - отладчик для OpenGL
- Вулкан - кроссплатформенный API для 2D и 3D графики с низкими накладными расходами, «инициатива OpenGL следующего поколения»
- Графический конвейер
- WebGPU
Рекомендации
- ^ Лекстрейт, Винсент (январь 2010 г.). "Маяк языков программирования, v10.0". Архивировано из оригинал 30 мая 2012 г.. Получено 14 марта, 2010.
- ^ «Продукты: Программное обеспечение: OpenGL: Лицензирование и логотипы». SGI. Архивировано из оригинал 1 ноября 2012 г.. Получено 7 ноября, 2012.
- ^ «Графическая система OpenGL: спецификация» (PDF). 4.0 (основной профиль). 11 марта 2010 г.
- ^ "SGI - Обзор OpenGL". В архиве с оригинала 31 октября 2004 г.. Получено 16 февраля, 2007.
- ^ Педди, Джон (июль 2012 г.). "Кто самый честный из них всех?". Мир компьютерной графики. Получено 30 мая, 2018.
- ^ «Обзор членства в Khronos и часто задаваемые вопросы». Khronos.org. Получено 7 ноября, 2012.
- ^ а б c d "Реестр Khronos OpenGL". Хронос Групп. Получено 31 июля, 2017.
- ^ "NV_half_float". Реестр OpenGL. Хронос Групп.
- ^ «Как создать расширения API Khronos». Хронос Групп. Получено 31 июля, 2017.
- ^ «Список альтернатив GLUT, поддерживаемый». Хронос Групп. Получено 2 мая, 2013.
- ^ «Связанные инструменты и API». www.opengl.org. OpenGL. Получено 8 октября, 2014.
- ^ «IRIS GL, собственность SGI».
- ^ «Создание OpenGL ARB». Архивировано из оригинал 22 февраля 2007 г.. Получено 16 февраля, 2007.
- ^ «Конец OpenGL ++». Хронос Групп.
- ^ «Ведущие разработчики игр призывают Microsoft активно поддерживать OpenGL». Следующее поколение. №32. Imagine Media. Август 1997. с. 17.
- ^ "Объявление Фаренгейта". Архивировано из оригинал 27 сентября 2007 г.
- ^ "Члены Фаренгейта. 1998". Computergram International. 1998. Архивировано с оригинал 5 октября 2007 г.
- ^ «Конец Фаренгейта».
- ^ «OpenGL ARB передаст контроль над спецификацией OpenGL компании Khronos Group». Пресс-релиз Хроноса. 31 июля 2006 г.
- ^ «OpenGL ARB передаст контроль над спецификацией OpenGL группе Khronos». Архив AccessMyLibrary.
- ^ Смит, Райан (5 июня 2018 г.). «Apple не поддерживает OpenGL во всех операционных системах; призывает разработчиков использовать Metal». www.anandtech.com. Purch. Получено 5 июня, 2018.
- ^ Астл, Дэйв (1 апреля 2003 г.). «Выход за рамки OpenGL 1.1 для Windows». gamedev.net. Получено 15 ноября, 2007.
- ^ Исорна, Дж. М. (2015). Simulación visual de materiales: teoría, tecnicas, análisis de casos. СКП Грау. Arquitectura, urbanisme i edificació (на испанском языке). Universitat Politècnica de Catalunya. п. 191. ISBN 978-84-9880-564-2. Получено 21 августа, 2019.
- ^ а б c «Графическая система OpenGL: спецификация» (PDF). 2.1. 1 декабря 2006 г.
- ^ "Точечный примитив".
- ^ «Графическая система OpenGL: спецификация» (PDF). 3.0. 23 сентября 2008 г.
- ^ «Графическая система OpenGL: спецификация» (PDF). 3.1. 28 мая 2009 года.
- ^ «Графическая система OpenGL: спецификация» (PDF). 3.2 (Основной профиль). 7 декабря 2009 г.
- ^ «Khronos демонстрирует передовое кроссплатформенное ускорение графики с помощью OpenGL 4.0».
- ^ «Khronos способствует развитию кроссплатформенной 3D-графики с выпуском спецификации OpenGL 4.1».
- ^ а б «Khronos обогащает кроссплатформенную трехмерную графику выпуском спецификации OpenGL 4.2».
- ^ а б «Khronos выпускает спецификацию OpenGL 4.3 с основными улучшениями».
- ^ «Khronos выпускает спецификацию OpenGL 4.3 с основными улучшениями».
- ^ а б c "Khronos выпускает спецификацию OpenGL 4.4".
- ^ а б «Khronos Group объявляет о ключевых достижениях в экосистеме OpenGL - пресс-релиз Khronos Group». Хронос Групп Инк. Получено 17 апреля, 2015.
- ^ а б «Khronos выпускает OpenGL 4.6 с поддержкой SPIR-V». Хронос Групп Инк. Получено 31 июля, 2017.
- ^ а б Кессенич, Джон; Болдуин, Дэйв. "Язык шейдинга OpenGL®, версия 4.60.7". Хронос Групп Инк. Получено 21 августа, 2019.
- ^ Аби-Чахла, Феди (16 сентября 2008 г.). «OpenGL 3 (3DLabs и эволюция OpenGL)». Оборудование Тома. Получено 24 октября, 2010.
- ^ «Графическая система OpenGL: спецификация» (PDF). 2.0. 22 октября 2004 г.
- ^ «OpenGL ARB объявляет об обновлении OpenGL 3.0». 30 октября 2007 г.. Получено 31 октября, 2007.
- ^ «Выпущен OpenGL 3.0, неистовство разработчиков - Slashdot». Tech.slashdot.org. Получено 7 ноября, 2012.
- ^ «OpenGL BOF прошел хорошо, вилки питча не обнаружены».
- ^ «Промышленный стандарт высокопроизводительной графики». OpenGL. 18 августа 2008 г.. Получено 31 июля, 2017.
- ^ «NVIDIA предоставляет ранний драйвер OpenGL 3.0 уже сейчас».
- ^ а б c d «Драйвер Intel Iris и HD Graphics для Windows 7/8 / 8.1 64bit». Центр загрузок Intel. Архивировано из оригинал 2 апреля 2015 г.
- ^ «Ожидаемый максимальный размер текстуры - Графика и программирование на GPU». GameDev.net.
- ^ «Процессоры Intel Skylake-S и наборы микросхем серии 100 подробно описаны в очевидной утечке». Гаджеты NDTV. 17 апреля 2015 года.
- ^ а б c Майкл Ларабель (31 июля 2017 г.). «NVIDIA выпускает драйвер Linux 381.26.11 с поддержкой OpenGL 4.6». Фороникс.
- ^ «Выпущен OpenGL 4.5 с одной из лучших функций Direct3D». Ars Technica. Получено 17 апреля, 2015.
- ^ «SG4121: Обновление OpenGL для графических процессоров NVIDIA». Ustream. Архивировано из оригинал 17 мая 2015 г.. Получено 17 апреля, 2015.
- ^ Килгард, Марк. «Обновление OpenGL 4.5 для графических процессоров NVIDIA». Получено 17 апреля, 2015.
- ^ Майкл Ларабель (21 августа 2019 г.). «Драйвер Intel OpenGL для Linux теперь поддерживает OpenGL 4.6 для Mesa 19.2». Фороникс.
- ^ Майкл Ларабель (27 ноября 2019 г.). «Драйвер AMD RadeonSI наконец-то поддерживает OpenGL 4.6». Фороникс.
- ^ «Выпущен графический драйвер AMD Adrenalin 18.4.1 (OpenGL 4.6, Vulkan 1.1.70) - Geeks3D». www.geeks3d.com. Получено 10 мая, 2018.
- ^ «Примечания к выпуску Radeon ™ Software Adrenalin Edition 18.4.1». support.amd.com. Получено 10 мая, 2018.
- ^ «Выпущен графический драйвер Intel 25.20.100.6861 (OpenGL 4.6 + Vulkan 1.1.103) | Geeks3D». Получено 16 мая, 2019.
- ^ «Драйверы DCH для Windows® 10». Центр загрузки Intel. Получено 21 августа, 2019.
- ^ «Выпущен графический драйвер NVIDIA GeForce 397.31 (OpenGL 4.6, Vulkan 1.1, RTX, CUDA 9.2) - Geeks3D». www.geeks3d.com. Получено 10 мая, 2018.
- ^ Каннингем, Эндрю (7 октября 2019 г.). «macOS 10.15 Catalina: обзор Ars Technica». Ars Technica.
- ^ Аксон, Самуэль (6 июня 2018 г.). «Прекращение поддержки OpenGL, плюс другие обновления, о которых Apple не рассказывала во время выступления». Ars Technica. Получено 19 октября, 2020.
- ^ «Vulkan и более быстрый OpenGL ES на iOS и macOS». Расплавленный. Получено 19 октября, 2020.
- ^ "Цинк". Последняя документация библиотеки 3D-графики Mesa.
- ^ Дингман, Хайден (3 марта 2015 г.). «Встречайте Vulkan, мощную платформенно-независимую игровую технологию, нацеленную на DirectX 12». Компьютерный мир. Получено 3 марта, 2015.
- ^ Брайт, Питер (3 марта 2015 г.). «Khronos представляет Vulkan: OpenGL, созданный для современных систем». Ars Technica. Получено 3 марта, 2015.
- ^ «Хронос объявляет об инициативе нового поколения OpenGL». АнандТех. Получено 20 августа, 2014.
- ^ «Выпущен OpenGL 4.5, представлен OpenGL следующего поколения: кроссплатформенный убийца Mantle, конкурент DX12». Получено 20 августа, 2014.
- ^ «Хронос публикует слайды об OpenGL-Next». Фороникс. Получено 22 августа, 2014.
дальнейшее чтение
- Шрейнер, Дэйв; Продавцы, Грэм; и другие. (30 марта 2013 г.). Руководство по программированию OpenGL: официальное руководство по изучению OpenGL. Версия 4.3 (8-е изд.). Эддисон-Уэсли. ISBN 978-0-321-77303-6.
- Продавцы, Грэм; Райт, Ричард С .; Хэмель, Николас (31 июля 2013 г.). OpenGL SuperBible: подробное руководство и справочник (6-е изд.). Эддисон-Уэсли. ISBN 978-0-321-90294-8.
- Рост, Рэнди Дж. (30 июля 2009 г.). Язык шейдинга OpenGL (3-е изд.). Эддисон-Уэсли. ISBN 978-0-321-63763-5.
- Ленгьел, Эрик (2003). Руководство по расширениям OpenGL. Чарльз Ривер Медиа. ISBN 1-58450-294-0.
- Совет по обзору архитектуры OpenGL; Шрейнер, Дэйв (2004). Справочное руководство OpenGL: официальный справочный документ по OpenGL. Версия 1.4. Эддисон-Уэсли. ISBN 0-321-17383-X.
- Совет по обзору архитектуры OpenGL; Шрейнер, Дэйв; и другие. Руководство по программированию OpenGL: официальное руководство по изучению OpenGL. Версия 2 (5-е изд.). Эддисон-Уэсли. ISBN 0-321-33573-2.
внешняя ссылка
- Официальный веб-сайт
- Обзор OpenGL и Вики OpenGL.org с дополнительной информацией о привязках OpenGL Language
- Веб-сайт SGI OpenGL
- OpenGL в Керли
- Khronos Group, Inc.
- Ангел, Эдвард и Шрейнер, Дэйв (2013). «Введение в программирование OpenGL». YouTube. СИГГРАФ Университет.