stringtranslate.com

OpenGLES

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 имеют общие профили (CM) и общие профили lite (CL), разница в том, что общие профили lite поддерживают только типы данных с фиксированной точкой вместо поддержки типов данных с плавающей точкой , тогда как общие профили поддерживают оба типа.

OpenGLES 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]

OpenGLES 1.1

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

OpenGLES 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]

OpenGLES 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 включают:

OpenGLES 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]

OpenGLES 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]

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

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

OpenGLES 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.

OpenGLES 1.1

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

OpenGLES 2.0

При поддержке:

OpenGLES 3.0

При поддержке:

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

OpenGLES 3.1

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

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

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

OpenGLES 3.2

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

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

Устаревание на платформах Apple

OpenGL ES (и OpenGL) был объявлен устаревшим в операционных системах Apple в пользу собственного графического API Metal , но всё ещё работал по крайней мере до iOS 12. [ 56]

Будущее

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

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

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

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

Ссылки

  1. ^ «Khronos расширяет сферу применения экосистемы 3D Open Standard». 10 августа 2015 г.
  2. ^ "Обзор OpenGL ES - The Khronos Group Inc". The Khronos Group . 2011-07-19. Архивировано из оригинала 2024-09-14.
  3. ^ ab "3D Graphics API State of the Union: SIGGRAPH 2015" (PDF) . Khronos . Промышленность поставит >1,7 млрд устройств в 2015 году
  4. ^ Hruska, Joel (4 марта 2015 г.). «Еще не умер: Mantle от AMD поддерживает новый API Vulkan и усилия в области виртуальной реальности». ExtremeTech . Ziff Davis.
  5. ^ «Какие версии GLSL можно использовать в OpenGL ES 2.0?». Stack Overflow.
  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?" . Получено 2022-04-19 .
  10. ^ "Khronos Press Releases - OpenGL ES 2.0". Khronos.org. 2007-03-05. Архивировано из оригинала 2010-12-28 . Получено 2010-12-23 .
  11. ^ Эдвард Энджел, Дэйв Шрайнер, Интерактивная компьютерная графика: подход сверху вниз с использованием OpenGL на основе шейдеров , 6-е издание, стр. xxi-xxii, ISBN 978-0-13-254523-5 
  12. ^ "Язык шейдеров OpenGL® ES" (PDF) . Khronos.org . Получено 16.02.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 – Common Profile Specification 2.0.25 (Difference Specification)" (PDF) . 2 ноября 2010 г.
  16. ^ ab "Руководство по программированию OpenGL ES 3.0" (PDF) . Pearson Education, Inc . Получено 2022-04-18 .
  17. ^ "Реестр Khronos OpenGL ES - The Khronos Group Inc" . Реестр.khronos.org .
  18. ^ "Khronos выпускает спецификацию OpenGL ES 3.0, чтобы вывести мобильную 3D-графику на новый уровень". Khronos. 2012-08-06 . Получено 2012-08-06 .
  19. ^ "WebGL: 2D и 3D графика для веба". Mozilla . Получено 2023-06-30 .
  20. ^ "Спецификация WebGL 2.0". registry.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 Specification" (PDF) . Khronos . Получено 2023-06-30 .
  23. ^ "Реестр Khronos OpenGL ES - The Khronos Group Inc" . Реестр.khronos.org .
  24. ^ "Khronos выпускает спецификацию OpenGL ES 3.1". Khronos.org. 2014-03-17 . Получено 2014-03-17 .
  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 Version 8.0 Product sheet". 2008-03-30. Архивировано из оригинала 2008-03-30 . Получено 2008-03-30 .
  32. ^ Дьюдер, Джанель (2022-12-09). "OpenGL ES - Разработка игр для Symbian". 25 лет программирования . Получено 2023-01-14 .
  33. ^ "Использование OpenGL ES". Платформа разработки программного обеспечения QNX (v6.5.0) . QNX . Получено 2011-01-08 .
  34. ^ "Демонстрация OpenGL ES в формате PPT". 21 ноября 2021 г.
  35. ^ "Презентация OpenGL ES/PSGL в формате PPT". Sony . Khronos. 21 ноября 2021 г.
  36. ^ "OpenGL ES SDK доступен для Nokia 6630". Форумы Khronos . 2004-09-22 . Получено 2023-01-14 .
  37. ^ "Новое в этой бета-версии". Заметки о выпуске - Приложение BlackBerry Java . Research in Motion . Архивировано из оригинала 2009-12-02 . Получено 2009-12-08 .
  38. ^ Кох, Дамиан (29.11.2009). «Чего ожидать от смартфонов BlackBerry». CNET Asia . Архивировано из оригинала 13.12.2009 . Получено 08.12.2009 .
  39. ^ ab "PDK - Обзор". HP Palm Developer Center. Архивировано из оригинала 2011-01-01 . Получено 2010-12-23 .
  40. ^ "DMP объявляет о принятии Nintendo PICA 200, совместимого с OpenGL ES 1.1". 2010-06-21 . Получено 2013-06-02 .
  41. ^ "Спецификации Android 2.2". 2010-07-01. Архивировано из оригинала 2010-10-11.
  42. ^ abcd "Расширения и возможности Mesa OpenGL". people.freedesktop.org .
  43. ^ ab "Расширения и возможности Mesa OpenGL". people.freedesktop.org .
  44. ^ "Программное обеспечение Maemo - Nokia > Мобильный компьютер Nokia N900 > Технические характеристики". Nokia Corporation. Архивировано из оригинала 29 октября 2009 года . Получено 12 января 2010 года .
  45. ^ "iOS 8 для разработчиков". Разработчик Apple.
  46. ^ "Продукты, соответствующие Khronos" . 21 ноября 2021 г.
  47. ^ Саг, Аншель (2013-04-11). "Состояние OpenGL ES 3.0: кто что получил". Bright Side of News . Архивировано из оригинала 2013-06-15 . Получено 2015-12-22 .
  48. ^ "Продукты, совместимые с OpenGL ES3.1" . Получено 2014-08-11 .
  49. ^ "Графические процессоры Adreno™". Qualcomm . Получено 2014-08-11 .
  50. ^ "GL ES 3.1 на Adreno 3xx?" . Получено 2014-08-11 .
  51. ^ "Исследована архитектура Mali Midgard от ARM". AnandTech . Получено 11 августа 2014 г.
  52. ^ «Ядра Vivante Vega для 3D» . Виванте . Проверено 10 декабря 2014 г.
  53. ^ "Khronos представляет OpenGL ES 3.2 и новые расширения GL, но на этой неделе нет Vulkan". 10 августа 2015 г. Получено 11 августа 2015 г.
  54. ^ "OpenGL ES 3.2 и Vulkan – все, что вам нужно знать". Android Authority . 2015-08-15 . Получено 2015-12-22 .
  55. ^ "NVIDIA выпускает драйверы Game Ready 358.50 для Star Wars Battlefront". AnandTech . Получено 2015-10-07 .
  56. ^ Apple Inc. "Что нового в iOS - Apple Developer". developer.apple.com . Получено 2018-08-07 . Приложения, созданные с использованием OpenGL ES, продолжат работать в iOS 12, но OpenGL ES устарел в iOS 13.
  57. ^ Khronos. "Vulkan, OpenGL и OpenGL ES" (PDF) . www.khronos.org . Получено 24.04.2020 .
  58. ^ "p3/regal: Regal для OpenGL". GitHub. 18 октября 2021 г.
  59. ^ Маккатчан, Джон (7 сентября 2012 г.). «Подробнее: внедрение Regal OpenGL в собственный клиент». Gamasutra.
  60. ^ "GL4ES - Драйвер OpenGL для оборудования GLES". GitHub .

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

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