OpenGL

редактировать

OpenGL
OpenGL logo (Nov14).svg
Video games outsource real-time rendering calculations to the GPU over OpenGL. The rendered results are not sent back to main memory, but to the framebuffer of video memory instead. The display controller will then send this data to the display device. Видеоигры передают вычисления рендеринга в реальном времени на GPU через OpenGL. Визуализированные результаты не отправляются обратно в основную память, а вместо этого отправляются в кадровый буфер видеопамяти. Затем контроллер дисплея отправит эти данные на устройство отображения.
Исходный автор (-ы) Silicon Graphics
Разработчик (-ы) Khronos Group. (ранее ARB )
Начальный выпуск30 июня 1992 г.; 28 лет назад (1992-06-30)
Стабильный выпуск 4.6 / 31 июля 2017 г.; 3 года назад (31.07.2017)
Написано наC
Тип 3D-графика API
Лицензия
  • Лицензия с открытым исходным кодом для использования SI: Это лицензия свободного программного обеспечения B, близкая к BSD, X и Mozilla.
  • Лицензия на товарный знак для новых лицензиатов, которые хотят использовать товарный знак и логотип OpenGL и заявить о соответствии.
Веб-сайтopengl.org

OpenGL (Open Graphics Library ) - это кросс-платформенный, кроссплатформенный интерфейс прикладного программирования (API) для рендеринга 2D и 3D векторная графика. API обычно используется для взаимодействия с графическим процессором (GPU) для достижения аппаратно-ускоренного рендеринга..

Silicon Graphics, Inc. (SGI) начала разработку OpenGL в 1991 году и выпустила его 30 июня 1992 года; приложения широко используют его в областях автоматизированного проектирования (CAD), виртуальной реальности, научной визуализации, визуализации информации, моделирования полета и видеоигры. С 2006 года OpenGL находится под управлением некоммерческой технологии consortium Khronos Group.

Содержание
  • 1 Дизайн
    • 1.1 Разработка
  • 2 Документация
  • 3 Связанные библиотеки
    • 3.1 Контекстные и оконные инструменты
    • 3.2 Библиотеки загрузки расширений
    • 3.3 Реализации
  • 4 История
  • 5 История версий
    • 5.1 OpenGL 2.0
    • 5.2 Длинный пик и OpenGL 3.0
    • 5.3 OpenGL 3.0
    • 5.4 OpenGL 3.1
    • 5.5 OpenGL 3.2
    • 5.6 OpenGL 4.0
    • 5.7 OpenGL 4.1
    • 5.8 OpenGL 4.2
    • 5.9 OpenGL 4.3
    • 5.10 OpenGL 4.4
    • 5.11 OpenGL 4.5
    • 5.12 OpenGL 4.6
  • 6 Альтернативные реализации
  • 7 Vulkan
  • 8 См. Также
  • 9 Ссылки
  • 10 Дополнительная литература
  • 11 Внешние ссылки
Дизайн
Иллюстрация процесса графического конвейера

Спецификация 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 ; и привязки Java и C, предоставляемые Android.

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

Разработка

OpenGL - это развивающийся API. Khronos Group регулярно выпускает новые версии спецификаций OpenGL, каждая из которых расширяет API для поддержки различных новых функций. Детали каждой версии определяются на основе консенсуса между участниками Группы, включая производителей видеокарт, разработчиков операционных систем и общие технологические компании, такие как Mozilla и Google.

В дополнение к необходимым функциям с помощью основного API поставщики графических процессоров (GPU) могут предоставлять дополнительные функциональные возможности в виде расширений. Расширения могут вводить новые функции и новые константы, а также могут ослаблять или снимать ограничения для существующих функций OpenGL. Поставщики могут использовать расширения для предоставления настраиваемых API без необходимости поддержки со стороны других поставщиков или Khronos Group в целом, что значительно увеличивает гибкость OpenGL. Все расширения собраны и определены в реестре OpenGL.

Каждое расширение связано с коротким идентификатором, основанным на названии компании, которая его разработала. Например, идентификатор Nvidia - это NV, который является частью имени расширения GL_NV_half_float, константы GL_HALF_FLOAT_NVи функции glVertex2hNV (). Если несколько поставщиков соглашаются реализовать одни и те же функциональные возможности с использованием одного и того же API, может быть выпущено общее расширение с использованием идентификатора EXT. В таких случаях также может случиться так, что Совет по анализу архитектуры Khronos Group даст расширению свое явное одобрение, и в этом случае используется идентификатор ARB.

Функции, представленные каждой новой версией 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):

The Green Книга
Программирование OpenGL для системы X Window. ISBN 978-0-201-48359-8
Книга о взаимодействии с X11 и OpenGL Utility Toolkit (GLUT).
Синяя книга
Справочное руководство OpenGL, 4-е издание. ISBN 0-321-17383-X
По сути, это распечатка бумажной копии страниц руководства (man) по Unix для OpenGL.
Включает развернутую диаграмму размером с плакат, показывающую структуру идеализированной реализации OpenGL.
Альфа-книга (белая обложка)
Программирование OpenGL для Windows 95 и Windows NT. ISBN 0-201-40709-4
Книга о взаимодействии OpenGL с Microsoft Windows.
Связанные библиотеки

Были выпущены самые ранние версии OpenGL с сопутствующей библиотекой OpenGL Utility Library (GLU). Он предоставляет простые и полезные функции, которые вряд ли будут поддерживаться современным оборудованием, такие как тесселяция и создание mipmaps и примитивных форм. Спецификация GLU последний раз обновлялась в 1998 году и зависит от функций OpenGL, которые сейчас не рекомендуются.

Контекстные и оконные инструменты

Учитывая, что создание контекста OpenGL - довольно сложный процесс, и учитывая, что он варьируется Между операционными системами автоматическое создание контекста OpenGL стало общей чертой нескольких библиотек разработки игр и пользовательского интерфейса, включая SDL, Allegro, SFML, FLTK и Qt. Несколько библиотек были разработаны исключительно для создания окна с поддержкой OpenGL. Первой такой библиотекой была OpenGL Utility Toolkit (GLUT), позже замененная freeglut. GLFW - более новая альтернатива.

  • Эти наборы инструментов предназначены для создания окон OpenGL и управления ими, а также для управления вводом, но не более того.
  • GLFW - кроссплатформенное управление окнами и клавиатурой -машинка-джойстик-манипулятор; более ориентирован на игры
  • freeglut - кроссплатформенный обработчик окон и клавиатуры-мыши; его API - это надмножество API GLUT, и он более стабилен и актуален, чем GLUT
  • OpenGL Utility Toolkit (GLUT) - старый обработчик окон, больше не обслуживаемый.
  • Несколько мультимедийных библиотек "может создавать окна OpenGL, помимо ввода, звука и других задач, полезных для игровых приложений.
  • Allegro 5 - кроссплатформенная мультимедийная библиотека с C API, ориентированная на разработку игр
  • Simple DirectMedia Layer (SDL) - кроссплатформенная мультимедийная библиотека с C API
  • SFML - кроссплатформенная мультимедийная библиотека с C ++ API и множеством других привязок к таким языкам, как C #, Java, Haskell и Go
  • Наборы инструментов для виджетов
  • FLTK - Небольшая кроссплатформенная библиотека виджетов C ++
  • Qt - Набор инструментов для кросс-платформенных виджетов C ++. Он предоставляет множество вспомогательных объектов OpenGL, которые даже абстрагируют разницу между GL рабочего стола и OpenGL ES
  • wxWidgets - кроссплатформенный инструментарий виджетов C ++

Библиотеки загрузки расширений

Учитывая высокую рабочую нагрузку участвуя в идентификации и загрузке расширений OpenGL, было разработано несколько библиотек, которые автоматически загружают все доступные расширения и функции. Примеры включают GLEE, GLEW и glbinding. Расширения также загружаются автоматически большинством языковых привязок, таких как JOGL и.

Реализации

Mesa 3D - это реализация OpenGL с открытым исходным кодом. Он может выполнять чисто программный рендеринг, а также может использовать аппаратное ускорение на BSD, Linux и других платформах, используя преимущества инфраструктуры прямого рендеринга. Начиная с версии 20.0, он реализует версию 4.6 стандарта OpenGL.

История

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

К началу 1990-х годов Silicon Graphics (SGI) была лидером в области трехмерной графики для рабочих станций. Их API IRIS GL был признан современным и стал де-факто отраслевым стандартом, вытеснив основанный на открытых стандартах PHIGS. Это произошло потому, что IRIS GL считался более простым в использовании и поддерживал немедленный режим рендеринга. Напротив, PHIGS считался сложным в использовании и устаревшим по функциональности.

Конкуренты SGI (в том числе Sun Microsystems, Hewlett-Packard и IBM ) также смогли вывести на рынок 3D-оборудование, поддерживаемое расширениями. стандарту PHIGS, который заставил SGI открыть исходный код версии IrisGL в качестве общедоступного стандарта под названием OpenGL .

. Однако у SGI было много клиентов, для которых переход с IrisGL на OpenGL потребовал значительных инвестиций. Более того, в IrisGL были функции API, которые не имели отношения к трехмерной графике. Например, он включал API окон, клавиатуры и мыши, отчасти потому, что он был разработан до X Window System и Sun NeWS. Кроме того, библиотеки IrisGL не подходили для открытия из-за проблем с лицензированием и патентами. Эти факторы потребовали от SGI продолжать поддерживать расширенные и проприетарные программные API Iris Inventor и Iris Performer, в то время как рыночная поддержка OpenGL созрела.

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

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

В 1994 году SGI поиграла с идеей выпустить нечто под названием «OpenGL ++ », которое включало бы такие элементы, как API графа сцены (предположительно на основе их технологии Performer ). Спецификация была распространена среди нескольких заинтересованных сторон, но так и не превратилась в продукт.

Microsoft выпустила Direct3D в 1995 году, который в конечном итоге стал основным конкурентом OpenGL. Более 50 разработчиков игр подписали открытое письмо в Microsoft, выпущенное 12 июня 1997 года, с призывом к компании активно поддерживать Open GL. 17 декабря 1997 года Microsoft и SGI инициировали проект Fahrenheit, который был совместным усилием с целью унификации интерфейсов OpenGL и Direct3D (а также добавления API графа сцены). В 1998 году к проекту присоединилась Hewlett-Packard. Первоначально он обещал упорядочить мир API-интерфейсов интерактивной трехмерной компьютерной графики, но из-за финансовых ограничений SGI, стратегических соображений Microsoft и общего отсутствия поддержки со стороны отрасли в 1999 году от него отказались.

В июле 2006 года Совет по обзору архитектуры OpenGL проголосовал за передачу контроля над стандартом API OpenGL группе Khronos.

В июне 2018 года Apple исключила API OpenGL на всех своих платформах. (iOS, macOS и tvOS ), настоятельно рекомендуя разработчикам использовать собственный Metal API, который был представлен в 2014 году.

История версий

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

История версий OpenGL
ВерсияДата выпускаВозможности
1.14 марта 1997 г.Текстурные объекты
1.216 марта 1998 г.3D-текстуры, форматы BGRA и упакованных пикселей, введение подмножества изображений, полезного для приложений обработки изображений
1.2.114 октября 1998 г.Концепция расширений ARB
1.314 августа 2001 г.Мультитекстурирование, мультисэмплинг, сжатие текстур
1.424 июля 2002 г.Текстуры глубины, GLSlang
1,529 июля 2003 г.Vertex Buffer Object (VBO), Occlusion Queries
2.07 сентября 2004 г.GLSL 1.1, MRT, текстуры Non Power of Two, Point Sprites, двусторонний трафарет
2.12 июля 2006 г.GLSL 1.2, объект пиксельного буфера (PBO), текстуры sRGB
3.011 августа 2008 г.GLSL 1.3, массивы текстур, Условный рендеринг, объект буфера кадра (FBO)
3,1M arch 24, 2009GLSL 1.4, создание экземпляров, объект буфера текстуры, объект унифицированного буфера, перезапуск примитива
3.23 августа 2009 г.GLSL 1.5, геометрический шейдер, Многосэмплированные текстуры
3.311 марта 2010 г.GLSL 3.30, Backports как можно больше функций из спецификации OpenGL 4.0
4.0Март 11, 2010GLSL 4.00, тесселяция на GPU, шейдеры с 64-битной точностью
4.126 июля 2010 г.GLSL 4.10, удобные для разработчиков выходные данные отладки, совместимость с OpenGL ES 2.0
4.28 августа 2011 г.GLSL 4.20, шейдеры с атомарными счетчиками, инстанс обратной связи отрисовки преобразования, упаковка шейдеров, улучшения производительности
4.36 августа 2012 г.GLSL 4.30, Вычислительные шейдеры, использующие параллелизм GPU, буферные объекты хранилища шейдеров, высококачественное сжатие текстур ETC2 / EAC, повышенная безопасность памяти, расширение надежности для нескольких приложений, совместимость с OpenGL ES 3.0
4.422 июля 2013 г.GLSL 4.40, управление размещением буфера, эффективные асинхронные запросы, макет переменных шейдера, эффективное связывание нескольких объектов, упрощенный перенос приложений Direct3D, расширение без привязки текстур, расширение разреженных текстур
4.511 августа 2014 г.GLSL 4.50, Direct State Access (DSA), Flush Control, надежность, OpenGL ES 3.1 API и совместимость с шейдерами, функции эмуляции DX11
4.631 июля 2017 г.GLSL 4.60, более эффективная обработка геометрии и выполнение шейдеров, дополнительная информация, отсутствие контекста ошибок, ограничение смещения полигона, SPIR-V, анизотропная фильтрация

OpenGL 2.0

Дата выпуска: 7 сентября 2004 г.

OpenGL 2.0 изначально был задуман 3Dlabs для решения проблем, связанных с застоем OpenGL и отсутствием четкого направления. 3Dlabs предложила ряд важных дополнений к стандарту. Большинство из них были в то время отклонены ARB или по иным причинам так и не были реализованы в той форме, которую предлагала 3Dlabs. Однако их предложение о языке затенения в стиле C было в конечном итоге завершено, что привело к нынешней формулировке языка затенения OpenGL (GLSL или GLslang). Подобно ассемблерным языкам затенения, которые он заменял, он позволял заменить вершину с фиксированной функцией и конвейер фрагментов на шейдеры, но на этот раз написанные на языке высокого уровня, подобном Си.

Конструкция GLSL отличалась относительно небольшим количеством уступок ограничению доступного на тот момент оборудования. Это восходит к более ранней традиции OpenGL, которая ставила амбициозную, дальновидную цель для 3D-ускорителей, а не просто отслеживала состояние доступного в настоящее время оборудования. Окончательная спецификация OpenGL 2.0 включает поддержку GLSL.

Longs Peak и OpenGL 3.0

Перед выпуском OpenGL 3.0 новая версия имела кодовое имя Longs Peak. На момент своего первоначального объявления 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 объявила, что столкнулась с несколькими проблемами, которые она хотела бы решить перед выпуском спецификации. В результате спецификация была отложена, и Khronos Group отказалась от медиа-отключения до выпуска окончательной спецификации OpenGL 3.0.

Окончательная спецификация оказалась гораздо менее революционной, чем предложение Лонгс Пик. Вместо того, чтобы удалить весь немедленный режим и фиксированные функции (не шейдерный режим), спецификация включила их как устаревшие функции. Предложенная объектная модель не была включена, и не было объявлено о планах ее включения в какие-либо будущие версии. В результате API остался в основном прежним, а несколько существующих расширений были переведены на основные функции.

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

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

OpenGL 3.0

Дата выпуска: 11 августа, 2008

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

Устаревшие функции включают:

  • Вся обработка вершин и фрагментов с фиксированными функциями
  • Отрисовка в прямом режиме с использованием glBegin и glEnd
  • Списки отображения
  • Цели рендеринга с индексированными цветами
  • OpenGL Shading Language версий 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 Series и новее (шейдеры FP64 реализованы путем эмуляции на некоторых графических процессорах TeraScale), Intel HD Graphics в процессорах Intel Ivy Bridge и новее.

OpenGL 4.1

Дата выпуска: 26 июля 2010 г.

Поддержка оборудования: Nvidia GeForce 400 серии и новее, AMD Radeon HD 5000 Series и новее (шейдеры FP64, реализованные путем эмуляции на некоторых графических процессорах TeraScale), Intel HD Graphics в Intel Ivy Bridge и новее.

  • Минимальный «максимальный размер текстуры» составляет 16 384 × 16 384 для GPU, реализующих эту спецификацию.

OpenGL 4.2

Дата выпуска: 8 августа 2011 г.

  • Поддержка шейдеров с атомарными счетчиками и операциями загрузки-хранения-атомарного чтения-изменения-записи на один уровень текстуры
  • Рисование нескольких экземпляров данных, захваченных при обработке вершин графического процессора (включая тесселяцию), для включения сложных объектов быть эффективным репозиционером ed и реплицировано
  • Поддержка изменения произвольного подмножества сжатой текстуры без необходимости повторной загрузки всей текстуры в графический процессор для значительного повышения производительности

Поддержка оборудования: Nvidia GeForce 400 series и новее, AMD Radeon HD 5000 Series и новее (шейдеры FP64, реализованные путем эмуляции на некоторых графических процессорах TeraScale) и Intel HD Graphics в процессорах Intel Haswell и новее. (Linux Mesa: Ivy Bridge и новее)

OpenGL 4.3

Дата выпуска: 6 августа 2012 г.

  • Вычислительные шейдеры, использующие параллелизм GPU в контексте графического конвейера
  • Буферные объекты хранилища шейдеров, позволяющие шейдерам читать и записывать буферные объекты, такие как загрузка / сохранение изображений из версии 4.2, но через язык, а не через вызовы функций.
  • Запросы параметров формата изображения
  • ETC2 / EAC сжатие текстур как стандартная функция
  • Полная совместимость с OpenGL ES 3.0 API
  • Возможности отладки для получения отладочных сообщений во время разработки приложения
  • Текстура представления для интерпретации текстур различными способами без репликации данных
  • Повышенная безопасность памяти и надежность работы с несколькими приложениями

Поддержка оборудования: AMD Radeon HD 5000 Series и новее (шейдеры FP64, реализованные путем эмуляции на некоторые графические процессоры TeraScale), Intel HD Graphics в процессорах Intel Haswell и новее. (Linux Mesa: Ivy Bridge без трафаретного текстурирования, Haswell и новее), Nvidia GeForce 400 series и новее.

OpenGL 4.4

Дата выпуска: 22 июля 2013 г.

  • Принудительные элементы управления использованием буферных объектов
  • Асинхронные запросы к буферным объектам
  • Выражение большего размера управление переменными интерфейса в шейдерах
  • Эффективное связывание нескольких объектов одновременно

Аппаратная поддержка: AMD Radeon HD 5000 Series и новее (шейдеры FP64 реализованы путем эмуляции на некоторых графических процессорах TeraScale), Intel HD Graphics в процессорах Intel Broadwell и новее (Linux Mesa: Haswell и новее), Nvidia GeForce 400 серии и новее, Tegra K1.

OpenGL 4.5

Дата выпуска: 11 августа 2014 г.

  • Прямой доступ к состоянию (DSA) - средства доступа к объектам позволяют запрашивать и изменять состояние без привязки объектов к контекстам для повышения эффективности и гибкости приложений и промежуточного программного обеспечения.
  • Flush Control - приложения могут управлять сбросом ожидающих команд перед переключением контекста - включение высокопроизводительных многопоточных приложений;
  • Надежность - обеспечение безопасной платформы для приложений, таких как браузеры WebGL, включая предотвращение сброса графического процессора, влияющего на любые другие запущенные приложения;
  • API OpenGL ES 3.1 и совместимость с шейдерами - для обеспечения простой разработки и выполнения последней версии OpenGL ES приложения в настольных системах.

Поддержка оборудования: AMD Radeon HD 5000 Series и новее (шейдеры FP64, реализованные путем эмуляции на некоторых графических процессорах TeraScale), Intel HD Graphics в Intel Процессоры Broadwell и новее (Linux Mesa: Haswell и новее), Nvidia GeForce 400 серии и новее, Tegra K1 и Tegra X1.

OpenGL 4.6

Дата выпуска: 31 июля 2017 г.

Аппаратная поддержка: AMD Radeon HD 5000 Series и новее (шейдеры FP64, реализованные путем эмуляции на некоторые графические процессоры TeraScale), Intel Haswell и новее, Nvidia GeForce 400 series и новее.

Поддержка драйверов:

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

Apple устарел OpenGL в iOS 12 и macOS 10.14 Mojave в пользу Metal, но он по-прежнему работает с macOS 10.15. Последняя версия, поддерживаемая для OpenGL, - это 4.1 с 2011 года. Проприетарная библиотека от Molten - авторов MoltenVK - называемая MoltenGL, может переводить вызовы OpenGL в Metal.

Mesa3D, графика с открытым исходным кодом библиотека, включает драйвер Zink для преобразования вызовов OpenGL в вызовы Vulkan, чтобы устройства, работающие только на Vulkan, могли обрабатывать OpenGL рабочего стола.

Vulkan

Vulkan, ранее называвшийся OpenGL следующего поколения Инициатива »(glNext) - это основательная попытка редизайна для унификации OpenGL и OpenGL ES в один общий API, который не будет обратно совместим с существующими версиями OpenGL.

Первоначальная версия Vulkan API была выпущена в феврале 16, 2016.

См. Также
References
Further reading
  • Shreiner, Dave; Sellers, Graham; и другие. (March 30, 2013). OpenGL Programming Guide: The Official Guide to Learning OpenGL. Version 4.3 (8th ed.). Эддисон-Уэсли. ISBN 978-0-321-77303-6.
  • Sellers, Graham; Wright, Richard S.; Haemel, Nicholas (July 31, 2013). OpenGL SuperBible: Comprehensive Tutorial and Reference (6th ed.). Эддисон-Уэсли. ISBN 978-0-321-90294-8.
  • Rost, Randi J. (July 30, 2009). OpenGL Shading Language (3rd ed.). Эддисон-Уэсли. ISBN 978-0-321-63763-5.
  • Lengyel, Eric (2003). The OpenGL Extensions Guide. Charles River Media. ISBN 1-58450-294-0.
  • OpenGL Architecture Review Board ; Shreiner, Dave (2004). OpenGL Reference Manual: The Official Reference Document to OpenGL. Version 1.4. Эддисон-Уэсли. ISBN 0-321-17383-X.
  • OpenGL Architecture Review Board ; Shreiner, Dave; и другие. OpenGL Programming Guide: The Official Guide to Learning OpenGL. Version 2 (5th ed.). Эддисон-Уэсли. ISBN 0-321-33573-2.
External links
Wikimedia Commons has media related to OpenGL.
Wikibooks has a book on the topic of: OpenGL Programming
Последняя правка сделана 2021-06-01 12:36:56
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте