stringtranslate.com

OpenGL ES

OpenGL для встраиваемых систем ( OpenGL ES или GLES ) — это подмножество [2] интерфейса прикладного программирования (API) рендеринга компьютерной графики OpenGL для рендеринга 2D и 3D компьютерной графики , например, используемой в видеоиграх , обычно с аппаратным ускорением с использованием графического процессора . процессор (GPU). Он предназначен для встраиваемых систем, таких как смартфоны , планшетные компьютеры , игровые консоли и КПК . OpenGL ES — это «наиболее широко используемый API 3D-графики в истории». [3]

API является межъязыковым и мультиплатформенным . Библиотека GLU и исходный GLUT недоступны для OpenGL ES, однако freeglut поддерживает ее. OpenGL ES находится под управлением некоммерческого технологического консорциума Khronos Group . Vulkan , API нового поколения от Khronos, создан для более простых высокопроизводительных драйверов для мобильных и настольных устройств. [4]

Версии

Сейчас существует несколько версий спецификации OpenGL ES. OpenGL ES 1.0 составлен на основе спецификации OpenGL 1.3, OpenGL ES 1.1 определен на основе спецификации OpenGL 1.5, а OpenGL ES 2.0 определен на основе спецификации OpenGL 2.0. Это означает, что, например, приложение, написанное для OpenGL ES 1.0, должно быть легко перенесено на настольный OpenGL 1.3; поскольку OpenGL ES является урезанной версией API, обратное может быть верным, а может и не быть, в зависимости от конкретных используемых функций.

OpenGL ES поставляется со своей собственной версией языка шейдеров (OpenGL ES SL), которая отличается от OpenGL SL . [5]

Версия 1.0 и 1.1 имеют профили common (CM) и common lite (CL), разница в том, что common lite поддерживает только поддержку типов данных с фиксированной запятой , а не с плавающей запятой , тогда как common поддерживает оба типа данных.

OpenGL ES 1.0

OpenGL ES 1.0 был публично выпущен 28 июля 2003 г. OpenGL ES 1.0 основан на исходном API OpenGL 1.3, с удаленными и небольшими добавлениями многих функций. Одним из существенных различий между OpenGL и OpenGL ES является то, что OpenGL ES устранил необходимость заключать вызовы библиотеки OpenGL в скобки glBeginи glEnd. Другие существенные различия заключаются в том, что семантика вызова примитивных функций рендеринга была изменена в пользу массивов вершин, а для координат вершин были введены типы данных с фиксированной точкой . Атрибуты также были добавлены для лучшей поддержки вычислительных возможностей встроенных процессоров, в которых часто отсутствует модуль с плавающей запятой (FPU). Многие другие функции и примитивы рендеринга были удалены в версии 1.0 для создания упрощенного интерфейса, в том числе:

Актуальная версия — 1.0.0.2. [6]

OpenGL ES 1.1

В OpenGL ES 1.1 добавлены такие функции, как обязательная поддержка мультитекстуры, улучшенная поддержка мультитекстур (включая операции объединения и скалярного произведения текстур), автоматическое создание MIP-карт , объекты буфера вершин , запросы состояния, пользовательские плоскости отсечения и больший контроль над рендерингом точек. [7] Актуальная версия — 1.1.12. [8]

OpenGL ES 2.0

OpenGL ES 2.0 был публично выпущен в марте 2007 года. [10] Он примерно основан на OpenGL 2.0, но в нем исключена большая часть конвейера рендеринга с фиксированными функциями в пользу программируемого, что аналогично переходу от OpenGL 3.0 к 3.1. . [11] Поток управления в шейдерах обычно ограничивается прямым ветвлением и циклами, где максимальное количество итераций можно легко определить во время компиляции. [12] Почти все функции рендеринга на этапе преобразования и освещения, такие как спецификация материалов и параметров освещения, ранее заданные API с фиксированными функциями, заменяются шейдерами, написанными графическим программистом. В результате OpenGL ES 2.0 не имеет обратной совместимости с OpenGL ES 1.1. Некоторые несовместимости между настольной версией OpenGL и OpenGL ES 2.0 сохранялись до версии OpenGL 4.1, в которой было добавлено расширение GL_ARB_ES2_compatibility. [13] Текущая версия — 2.0.25. [14]

Группа Khronos написала документ, описывающий различия между OpenGL ES 2.0 и обычным OpenGL 2.0. [15]

OpenGL ES 3.0

Спецификация OpenGL ES 3.0 [17] была публично выпущена в августе 2012 года. [18] Она обратно совместима с OpenGL ES 2.0 и частично совместима с WebGL 2.0, [19] поскольку WebGL 2.0 был разработан для обеспечения высокой степени совместимости с OpenGL ES 3.0. [20] Текущая версия стандарта OpenGL ES 3.0 — 3.0.6, выпущенная в ноябре 2019 года. [21]

Новые функциональные возможности спецификации OpenGL ES 3.0 включают в себя:

OpenGL ES 3.1

Спецификация OpenGL ES 3.1 [23] была публично выпущена в марте 2014 года. Новые функциональные возможности OpenGL ES 3.1 включают в себя: [24]

OpenGL ES 3.1 обратно совместим с OpenGL ES 2.0 и 3.0, что позволяет приложениям постепенно включать новые функции. Актуальная версия: 3.1-(ноябрь 2016 г.). [25]

OpenGL ES 3.2

Спецификация OpenGL ES 3.2 [26] была публично выпущена в августе 2015 года. Новые возможности OpenGL ES 3.2 включают:

Фактическое состояние: 3.2.6 июля 2019 г. [27] [28]

Еще несколько расширений разрабатываются или находятся в стадии разработки в Mesa для следующей версии OpenGL ES (см. Mesamatrix).

API следующего поколения — Vulkan. [29]

Использование платформы

Полный список компаний и соответствующих им продуктов можно найти здесь.

OpenGL ES 1.0

OpenGL ES 1.0 добавил официальный API 3D-графики в операционные системы Android [30] и Symbian OS v8.0a [31] [32] , а также в QNX [33] . Он также поддерживается PlayStation 3 в качестве одного из своих официальные графические API [34] (второй — низкоуровневая библиотека libgcm ) с Cg от Nvidia вместо GLSL. [35] PlayStation 3 также включает в себя несколько функций версии 2.0 OpenGL ES.

OpenGL ES 1.1

Версия OpenGL ES 1.1 поддерживается:

OpenGL ES 2.0

Поддерживается:

OpenGL ES 3.0

Поддерживается:

Поддерживается некоторыми последними версиями этих графических процессоров: [46] [47]

OpenGL ES 3.1

Поддерживается Windows, Linux, Android (начиная с версии 5.0) на устройствах с соответствующим оборудованием и драйверами, [48] включая:

Пакет расширений Android

Пакет расширений Android (AEP) — ​​это набор расширений OpenGL ES 3.1, объединенных в одно расширение, представленное Google в 2014 году. Это позволяет приложениям использовать все функции набора расширений, проверяя при этом только наличие одинокий. AEP был официально добавлен в Android Lollipop для предоставления дополнительных функций, таких как тесселяция, по сравнению с тем, что официально было в версии GLES 3.1. Обновление OpenGL ES 3.2 в основном состоит из дополнений AEP, которые уже присутствуют в настольном OpenGL. [53]

OpenGL ES 3.2

OpenGL ES 3.2, включающий пакет расширений Android (AEP), «может похвастаться небольшим количеством улучшений по сравнению с прошлогодним OpenGL ES 3.1. Оба используют аналогичные функции AEP. Благодаря AEP оборудование, совместимое с OpenGL ES 3.2, будет поддерживать тесселяцию для дополнительная детализация геометрии, новые шейдеры геометрии, сжатие текстур ASTC для меньшего использования пропускной способности памяти, цели рендеринга с плавающей запятой для высокоточных вычислительных процессов и новые функции отладки для разработчиков.Эти высококлассные функции уже присутствуют в полной спецификации OpenGL 4 группы. ." [54] [3]

Поддерживается Windows, Linux, Android (возможно, начиная с версии 6.0, требуется Vulkan 7.0+ 1.0 и OpenGL ES 3.2) на устройствах с соответствующим оборудованием и драйверами, включая:

Устаревание устройств Apple

OpenGL ES (и OpenGL) устарел в операционных системах Apple, но все еще работает как минимум до iOS 12. [56]

Будущее

В настоящее время не планируется выпуск новой базовой версии OpenGL ES, поскольку считается, что внедрение Vulkan заменит его во встроенных и мобильных приложениях. Разработка расширений OpenGL ES продолжается с 2017 года. [57]

Совместимость с OpenGL

Было создано несколько библиотек для эмуляции вызовов OpenGL с использованием GL ES:

Смотрите также

Рекомендации

  1. ^ «Хронос расширяет сферу применения 3D-экосистемы открытого стандарта» . 10 августа 2015 г.
  2. ^ «Обзор OpenGL ES» . Группа компаний «Хронос». 19 июля 2011 г.
  3. ^ ab «Состояние Союза API 3D-графики: SIGGRAPH 2015» (PDF) . Хронос . В 2015 году промышленность поставит >1,7 миллиарда устройств
  4. ^ Грушка, Джоэл (4 марта 2015 г.). «Еще не умер: AMD Mantle поддерживает новый Vulkan API и усилия по виртуальной реальности». ЭкстримТех . Зифф Дэвис.
  5. ^ «Какие версии GLSL я могу использовать в OpenGL ES 2.0?». Переполнение стека.
  6. ^ https://www.khronos.org/registry/OpenGL/specs/es/1.0/opengles_spec_1_0.pdf [ пустой URL-адрес PDF ]
  7. ^ http://developer.amd.com/wordpress/media/2012/10/GDC06-GLES_Tutorial_Day-Munshi-OpenGLES_Overview.pdf [ пустой URL-адрес PDF ]
  8. ^ https://www.khronos.org/registry/OpenGL/specs/es/1.1/es_full_spec_1.1.pdf [ пустой URL-адрес PDF ]
  9. ^ "переполнение стека: glGenFramebuffersOES против glGenFramebuffers?" . Проверено 19 апреля 2022 г.
  10. ^ «Пресс-релизы Хроноса — OpenGL ES 2.0» . Хронос.орг. 05.03.2007. Архивировано из оригинала 28 декабря 2010 г. Проверено 23 декабря 2010 г.
  11. ^ Эдвард Энджел, Дэйв Шрейнер, Интерактивная компьютерная графика: нисходящий подход с OpenGL на основе шейдеров , 6-е издание, стр. XXI-XXII, ISBN 978-0-13-254523-5 
  12. ^ «Язык шейдеров OpenGL® ES» (PDF) . Хронос.орг . Проверено 16 февраля 2013 г.
  13. ^ «Графическая система OpenGL(R): спецификация (версия 4.1 (основной профиль)» (PDF) , 25 июля 2010 г.
  14. ^ https://www.khronos.org/registry/OpenGL/specs/es/2.0/es_full_spec_2.0.pdf [ пустой URL-адрес PDF ]
  15. ^ «OpenGL© ES – Спецификация общего профиля 2.0.25 (Спецификация различий)» (PDF) . 2 ноября 2010 г.
  16. ^ ab «Руководство по программированию OpenGL ES 3.0» (PDF) . Пирсон Эдьюкейшн, Инк . Проверено 18 апреля 2022 г.
  17. ^ "Реестр Khronos OpenGL ES - The Khronos Group Inc" . Реестр.khronos.org .
  18. ^ «Хронос выпускает спецификацию OpenGL ES 3.0, чтобы вывести мобильную 3D-графику на новый уровень» . Хронос. 06 августа 2012 г. Проверено 6 августа 2012 г.
  19. ^ «WebGL: 2D и 3D-графика для Интернета» . Мозилла . Проверено 30 июня 2023 г.
  20. ^ «Спецификация WebGL 2.0» . Реестр.khronos.org .
  21. ^ https://www.khronos.org/registry/OpenGL/specs/es/3.0/es_spec_3.0.pdf [ пустой URL-адрес PDF ]
  22. ^ «Спецификация GLSL ES 3.0» (PDF) . Хронос . Проверено 30 июня 2023 г.
  23. ^ "Реестр Khronos OpenGL ES - The Khronos Group Inc" . Реестр.khronos.org .
  24. ^ «Хронос выпускает спецификацию OpenGL ES 3.1» . Хронос.орг. 17 марта 2014 г. Проверено 17 марта 2014 г.
  25. ^ https://www.khronos.org/registry/OpenGL/specs/es/3.1/es_spec_3.1.pdf [ пустой URL-адрес PDF ]
  26. ^ "Реестр Khronos OpenGL ES - The Khronos Group Inc" . Реестр.khronos.org .
  27. ^ https://www.khronos.org/registry/OpenGL/specs/es/3.2/es_spec_3.2.pdf [ пустой URL-адрес PDF ]
  28. ^ https://www.khronos.org/registry/OpenGL/specs/es/3.2/GLSL_ES_Specification_3.20.pdf [ пустой URL-адрес PDF ]
  29. ^ «OpenGL следующего поколения становится Vulkan: опубликованы дополнительные подробности» .
  30. ^ «Платформа Android». Android-разработчики .
  31. ^ «Информация о продукте Symbian OS версии 8.0» . 30 марта 2008 г. Архивировано из оригинала 30 марта 2008 г. Проверено 30 марта 2008 г.
  32. ^ Дудер, Джанель (9 декабря 2022 г.). «OpenGL ES — Разработка игр для Symbian». 25 лет программирования . Проверено 14 января 2023 г.
  33. ^ «Использование OpenGL ES». Платформа разработки программного обеспечения QNX (v6.5.0) . QNX . Проверено 8 января 2011 г.
  34. ^ «Демо OpenGL ES в формате PPT» . 21 ноября 2021 г.
  35. ^ «Презентация OpenGL ES/PSGL в формате PPT» . Сони . Хронос. 21 ноября 2021 г.
  36. ^ «OpenGL ES SDK доступен для Nokia 6630» . Форумы Хроноса . 22 сентября 2004 г. Проверено 14 января 2023 г.
  37. ^ «Новое в этой бета-версии» . Примечания к выпуску — Java-приложение BlackBerry . Исследования в движении . Архивировано из оригинала 2 декабря 2009 г. Проверено 8 декабря 2009 г.
  38. ^ Ко, Дамиан (29 ноября 2009 г.). «Чего ожидать от смартфонов BlackBerry». CNET Азия . Архивировано из оригинала 13 декабря 2009 г. Проверено 8 декабря 2009 г.
  39. ^ ab «ПДК — Обзор». Центр разработчиков HP Palm. Архивировано из оригинала 1 января 2011 г. Проверено 23 декабря 2010 г.
  40. ^ «DMP объявляет о выпуске PICA 200, совместимого с OpenGL ES 1.1, принятого Nintendo» . 21 июня 2010 г. Проверено 2 июня 2013 г.
  41. ^ «Характеристики Android 2.2» . 01 июля 2010 г. Архивировано из оригинала 11 октября 2010 г.
  42. ^ abcd «Расширения и возможности Mesa OpenGL». People.freedesktop.org .
  43. ^ ab «Расширения и возможности Mesa OpenGL». People.freedesktop.org .
  44. ^ «Программное обеспечение Maemo - Nokia > Мобильный компьютер Nokia N900 > Технические характеристики» . Корпорация Нокиа. Архивировано из оригинала 29 октября 2009 года . Проверено 12 января 2010 г.
  45. ^ «iOS 8 для разработчиков». Разработчик Apple.
  46. ^ "Продукты, соответствующие Khronos" . 21 ноября 2021 г.
  47. ^ Саг, Аншель (11 апреля 2013 г.). «Состояние OpenGL ES 3.0: у кого что есть». Светлая сторона новостей . Архивировано из оригинала 15 июня 2013 г. Проверено 22 декабря 2015 г.
  48. ^ «Продукты, соответствующие OpenGL ES3.1» . Проверено 11 августа 2014 г.
  49. ^ «Графические процессоры Adreno™» . Квалкомм . Проверено 11 августа 2014 г.
  50. ^ "GL ES 3.1 на Adreno 3xx?" . Проверено 11 августа 2014 г.
  51. ^ "Изучена архитектура Мали Мидгарда от ARM" . АнандТех . Проверено 11 августа 2014 г.
  52. ^ «Ядра Vivante Vega для 3D» . Виванте . Проверено 10 декабря 2014 г.
  53. ^ «Хронос дебютирует с OpenGL ES 3.2 и новыми расширениями GL, но на этой неделе не будет Vulkan» . 10 августа 2015 года . Проверено 11 августа 2015 г.
  54. ^ «OpenGL ES 3.2 и Vulkan – все, что вам нужно знать». Администрация Андроида . 15 августа 2015 г. Проверено 22 декабря 2015 г.
  55. ^ «NVIDIA выпускает 358.50 готовых к играм драйверов для Star Wars Battlefront» . АнандТех . Проверено 7 октября 2015 г.
  56. ^ Apple Inc. «Что нового в iOS — разработчик Apple». разработчик.apple.com . Проверено 7 августа 2018 г. Приложения, созданные с использованием OpenGL ES, будут продолжать работать в iOS 12, но OpenGL ES устарел в iOS 13.
  57. ^ Хронос. «Вулкан, OpenGL и OpenGL ES» (PDF) . www.khronos.org . Проверено 24 апреля 2020 г.
  58. ^ «p3/regal: Regal для OpenGL» . Гитхаб. 18 октября 2021 г.
  59. Маккатчан, Джон (7 сентября 2012 г.). «Подробно: внедрение Regal OpenGL в собственный клиент». Гамасутра.
  60. ^ «GL4ES — драйвер OpenGL для оборудования GLES» . Гитхаб .

дальнейшее чтение

Внешние ссылки