OpenGL ES

редактировать
Подмножество OpenGL API для встраиваемых систем
OpenGL ES
Логотип OpenGL ES Логотип OpenGL ES
Автор (ы)) ARB
Разработчик (и) Khronos Group
Первый выпуск28 июля 2003 г.; 17 лет назад (28.07.2003)
Стабильный выпуск 3.2 / 10 августа 2015 г.; 5 лет назад (10.08.2015)
Операционная система Кросс-платформенная
Платформа Кросс-платформенная
Тип API
Лицензия Бесплатно, роялти или лицензирование
Веб-сайтwww.khronos.org / opengles

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

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

Содержание
  • 1 Версии
    • 1.1 OpenGL ES 1.0
    • 1.2 OpenGL ES 1.1
    • 1.3 OpenGL ES 2.0
    • 1.4 OpenGL ES 3.0
    • 1.5 OpenGL ES 3.1
    • 1.6 OpenGL ES 3.2
  • 2 Использование платформы
    • 2.1 OpenGL ES 1.0
    • 2.2 OpenGL ES 1.1
    • 2.3 OpenGL ES 2.0
    • 2.4 OpenGL ES 3.0
    • 2.5 OpenGL ES 3.1
      • 2.5.1 Android Extension Pack
    • 2.6 OpenGL ES 3.2
  • 3 Устаревшая поддержка устройств Apple
  • 4 Будущее
  • 5 Совместимость с OpenGL
  • 6 См. Также
  • 7 Ссылки
  • 8 Дополнительная литература
  • 9 Внешние ссылки
Версии

Сейчас существует несколько версий спецификации 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.

Версии 1.0 и 1.1 имеют общие (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 для создания облегченного интерфейса, включая:

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

Фактическая версия - 1.0.0.2.

Имя расширенияНомер сортировкиПодробности
OES_byte_coordinates OpenGL ES Extension # 4(ранее OpenGL Extension # 291)
OES_compressed_paletted_texture OpenGL ES Extension # 6(ранее OpenGL Extension # 294)
OES_fixed_point OpenGL ES Extension # 9(ранее OpenGL Extension # 292)
OES_query_matrix OpenGL ES Extension # 16(ранее OpenGL Extension # 296)
OES_read_format OpenGL ES Extension # 17(ранее OpenGL Extension # 295)
OES_single_precision OpenGL ES Extension # 18(ранее OpenGL Extension # 29 3)
опциональноMesa (все драйверы)
OES_compressed_ETC1_RGB8_texture OpenGL ES Extension # 5

OpenGL ES 1.1

OpenGL ES 1.1 добавлены функции, такие как обязательная поддержка для мультитекстур, улучшенная поддержка мультитекстур (включая комбайнеры и операции с точечным произведением текстуры), автоматическое создание mipmap, объекты буфера вершин, запросы состояния, плоскости пользовательских клипов и больший контроль над рендерингом точек. Фактическая версия - 1.1.12.

Имя расширенияСортировка #Number
OES_draw_texture OpenGL ES Extension # 7
OES_matrix_get OpenGL ES Extension # 11
OES_point_size_array Расширение OpenGL ES № 14
OES_point_sprite Расширение OpenGL ES № 15
необязательноMesa (все драйверы)
OES_EGL_image Расширение OpenGL ES № 23
OES_EGL_image_external OpenGL ES Extension # 87
OES_required_internalformat OpenGL ES Extension # TBD

OpenGL ES 2.0

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

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

Имя расширенияНомер сортировки
OES_texture_cube_map OpenGL ES Extension # 20
OES_texture_npot OpenGL ES Extension # 37
OES_deptdiv class="ht"4 OpenGL ES Extension # 24
OES_depth_texture OpenGL ES Extension # 44
OES_element_element_element_element>Расширение OpenGL ES № 26
OES_fbo_render_mipmap Расширение OpenGL ES № 27
OES_get_program_binary Расширение OpenGL ES № 47
OES_mapbuffer Расширение OpenGL ES № 29
OES_packed_packed_packed Расширение ES № 43
OES_rgb8_rgba8 Расширение OpenGL ES № 30
OES_stencil8 Расширение OpenGL ES № 33
OES_vertex_half_float Расширение OpenGL ES № 38
дополнительноев MESA (все драйверы)
OES_EGL_image OpenGL ES Extension # 23 (отличается для 1.1)
OES_EGL_image_external OpenGL ES Extension # 87 (отличается для 1. 1)
OES_texture_float_linear OES_texture_half_float_linear OpenGL ES Extension # 35, расширенный в ES 3.0 и 3.1
OES_texture_float OES_texture_half_float OpenGL ES Extension # 36, расширенный в ESGL96, OpenGL96, OpenGL96, OpenGL96, OpenGL96 Расширение ES № 45
OES_surfaceless_context Расширение OpenGL ES №116
OES_depth_texture_cube_map Расширение OpenGL ES №136
EXT_texture_filter_anisotropic OpenGL_texture_filter_anisotropic OpenGL_texture_filter_anisotropic OpenGL ES Extension_REX_TYPE_101 # 42
EXT_texture_compression_dxt1 Расширение OpenGL ES № 49
EXT_texture_format_BGRA8888 Расширение OpenGL ES № 51
EXT_discard_framebuffer Расширение OpenGL ES # 64 <428_min>EXT_blend596
EXT_read_format_bgra Расширение OpenGL ES № 66
EXT_multi_draw_arrays Расширение OpenGL ES № 69
EXT_frag_depth Расширение OpenGL ES № 86
EXT_unpack_subimage № 90GL ES596>EXT_texture_rg OpenGL ES Расширение № 103
EXT_draw_buffers Расширение OpenGL ES № 151
EXT_compressed_ETC1_RGB8_sub_texture Расширение OpenGL ES № 188
NV_draw_buffers Расширение OpenGL ES № 91 Расширение OpenGL ES № 91 NV_ 92
NV_read_buffer OpenGL ES Extension # 93
NV_read_depth_stencil OpenGL ES Extension # 94
ANGLE_texture_compression_dxt OpenGL ES Extension # 111

OpenGL ES 3.0

Спецификация OpenGL ES 3.0 была публично выпущена в августе 2012 года. OpenGL ES 3.0 обратно совместим с OpenGL ES 2.0, что позволяет приложениям постепенно добавлять новые визуальные функции в приложения. OpenGL 4.3 обеспечивает полную совместимость с OpenGL ES 3.0. Версия 3.0 также является основой для WebGL 2.0. Актуальна версия 3.0.6.

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

Имя расширенияНомер сортировкиПодробности
OES_vertex_array_object Расширение OpenGL ES № 71
KHR_context_flush_control Расширение OpenGL ES № 191( только для GL_KHR_context_flush_control)
дополнительныйв MESA (все драйверы)
OES_texture_compression_astc Расширение OpenGL ES # 162
EXT_texture_border_clamp OpenGL ES Extension_leverselever # 182
>Расширение OpenGL ES № 204
OES_EGL_image_external_essl3 Расширение OpenGL ES № 220
MESA_shader_integer_functions Расширение OpenGL ES № 495

OpenGL ES 3.1

Спецификация OpenGL ES 3.1 была выпущена публично. в марте 2014 г. Новые функции в OpenGL ES 3.1 включают:

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

Имя расширенияСортировка #Number
ARB_arrays_of_arrays ARB Extension # 120
ARB_compute_shader ARB Extension # 122
ARB_explicit_uniform_location АРБ расширение # 128
ARB_framebuffer_no_attachments АРБ Extension # 130
ARB_program_interface_query АРБ Удлинитель # 134
ARB_shader_atomic_counters АРБ Удлинитель # 114
ARB_shader_image_load_store АРБ Расширение # 115
ARB_shader_storage_buffer_object Расширение ARB # 137
ARB_separate_shader_objects Расширение ARB # 97
ARB_stencil_texturing Расширение ARB # 138
ARBinding_vertex_attrib>ARBinding # 125_attrib>ARBinding_vertex_attrib>ARbinding 125_attrib>ARBinding # 125_attrib 596>ARB Extension # 87
ARB_shading_language_packing ARB Extension # 116
ARB_shader_image_size ARB Extension # 136
ARB_texture_storage_multisample ARB_texture_storage_multisample ARB_texture_storage_multisample ARB Extension # 141_texture_master510>ARB Extension
EXT_shader_integer_mix Расширение OpenGL ES # 161
необязательныйMesa (все драйверы OpenGL ES 3.1+)
ARB_sample_locations ARB Extension # 181
OES_texture_view OpenGL ES Extension # 218
NV_image_formats OpenGL Расширение ES № 200
EXT_render_snorm Расширение OpenGL ES № 206
EXT_texture_norm16 Расширение OpenGL ES № 207

OpenGL ES 3.2

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

  • геометрии и тесселяции, для эффективной обработки сложных сцен на графическом процессоре.
  • Цели рендеринга с плавающей запятой для повышения гибкости при выполнении высокоточных вычислений.
  • Сжатие ASTC для уменьшения объема памяти и полосы пропускания, используемой для обработки текстур.
  • Улучшенное смешивание для сложной композиции и обработки множественных вложений цветов.
  • Расширенные объекты текстуры, такие как буферы текстур, мультидискретный 2D-массив и массивы кубической карты.
  • Функции отладки и устойчивости для e разработка кода asier и безопасное выполнение.

Фактическое состояние: 3.2.6, июль 2019 г.

Имя расширенияНомер сортировки
KHR_blend_equation_advanced Расширение OpenGL ES № 168
EXT_color_buffer_float Расширение OpenGL ES № 137
KHR_debug Расширение OpenGL ES № 118
KHR_robustness Расширение OpenGL ES № 190
OES_copy_image Расширение OpenGL ES № 208
OES_draw_buffers_buffers5 Расширение OpenGL ES №209
OES_draw_elements_base_vertex Расширение OpenGL ES №219
OES_geometry_shader Расширение OpenGL ES №210
OES_gpu_shader5 OpenGL ES Extension # 211ES596 Расширение № 169
OES_sample_variables Расширение OpenGL ES №170
OES_shader_image_atomic Расширение OpenGL ES № 171
OES_shader_io_blocks Расширение OpenGL ESHeder_io_blocks OpenGL Extension # 213 <502_interface_sample_shader5>OpenGL_sample_sample_shader5_extension # 0ES_sample_sample_shader5_extension 172
OES_tessellation_shader Расширение OpenGL ES № 214
OES_texture_border_clamp Открыть GL ES Extension # 215
OES_texture_buffer OpenGL ES Extension # 216
OES_texture_cube_map_array OpenGL ES Extension # 217
OES_texture_stencil8 OpenGL_texture_stencil8 OpenGL_texture_stencil8 OpenGL_texture_stencil_sample_2_extension_texture_2 OpenGL_TEXTURES_Design_Sample_Sample_2OES_Design_Design_Sample_2OES_Description_Description_Description_Description Расширение № 174
KHR_texture_compression_astc_ldr Расширение OpenGL ES № 117 (только LDR)
OES_primitive_bounding_box Расширение OpenGL ES № 212
необязательноMesa (все драйверы OpenGL ES 3.2+)
KHR_texture_compression_astc_hdr Расширение OpenGL ES № 117 (LDR включено), Расширение ARB № 118
KHR_blend_equation_advanced_coherent Расширение OpenGL ES № 168
KHR_texture_compression_3docs_Extension_3BL_TEXTURN_TEXTURE_COMPTIONED_ASCONTEC_SL_SC_3)

OES_viewport_array

Расширение OpenGL ES # 267

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

API следующего поколения - Vulkan.

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

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

OpenGL ES 1.0

OpenGL ES 1.0 добавил официальную 3D-графику API в операционные системы Android и Symbian, а также в QNX It также поддерживается PlayStation 3 в качестве одного из официальных графических API-интерфейсов (другой является библиотекой низкого уровня libgcm) с Nvidia Cg вместо GLSL. PlayStation 3 также включает несколько функций версии 2.0 OpenGL ES.

OpenGL ES 1.1

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

OpenGL ES 2.0

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

OpenGL ES 3.0

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

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

  • Adreno серий 300 и 400 (Android, BlackBerry 10, Windows10 Windows RT )
  • Mali серии T600 и новее (Android, Linux, Windows 7)
  • PowerVR Series6 (iOS, Linux)
  • Vivante (Android, OS X 10.8.3, Windows 7)
  • Nvidia (Android), Tesla G80 +: Linux, Windows 7+
  • Intel HD Graphi cs Sandy Bridge и выше (Linux)
  • AMD Terascale и актуальная GCN-архитектура (Windows, Linux)
  • LLVMpipe и Softpipe: программные драйверы в Mesa
  • VIRGL: виртуальный драйвер для виртуальных машин в 2018 году с Mesa 18.1 (см. Mesamatrix.net)

OpenGL ES 3.1

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

  • Adreno 400 series
  • Adreno 500 series (Mesa 18.1 для Linux и Android)
  • AMD Terascale и актуальная GCN-архитектура (Windows, Linux)
  • Intel HD Графика для Intel Atom Z3700 series (Android)
  • Intel HD Graphics для Intel Celeron серий N и J (Android)
  • Intel HD Graphics для Intel Pentium серии N и J (Android)
  • Intel HD Graphics Haswell и выше (Linux Mesa: предыдущая версия Ivy Bridge почти без трафаретного текстурирования)
  • Серия Mali T6xx (midgard) и далее (Android, Linux)
  • Nvidia GeForce 400 серии и новее (Windows, L inux)
  • Nvidia Tegra K1 (Android, Linux)
  • Nvidia Tegra X1 (Android)
  • PowerVR Series 6, 6XE, 6XT, 7XE и 7XT (Linux, Android)
  • Vivante серии GC2000 и далее (опционально с GC800 и GC1000)
  • VIRGL: виртуальный драйвер для виртуальных машин в 2018 году с Mesa 18.1 (см. Mesamatrix.net)

Android Extension Pack

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

OpenGL ES 3.2

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

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

  • Adreno 420 и новее (Android, Linux)
  • AMD GCN-архитектура (Windows, Linux (Mesa 18. 2))
  • Intel HD Graphics Skylake и выше (Linux)
  • Mali-T760 и новее (Android, Linux)
  • Nvidia GeForce серии 400 (Fermi) и новее ( Windows, Linux)
  • VIRGL: виртуальный драйвер для виртуальных машин в 2018 году с Mesa 18.1 (см. Mesamatrix.net)
Устаревшая поддержка устройств Apple

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

Будущее

Нет планов для новой базовой версии, потому что Vulkan импульс вытесняет его

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

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

См. Также
  • Direct3D - Windows API для высокопроизводительной трехмерной графики с аппаратной поддержкой 3D-ускорения
  • DirectX - Windows API для обработки задач, связанных с графикой и видео
  • Metal - низкоуровневая высокопроизводительная графическая библиотека с 3D-ускорением для устройств Apple
  • OpenSL ES - API для звука во встроенных системах, разработанный Khronos Group
  • ANGLE (программное обеспечение) - разработанная Google библиотека для преобразования вызовов OpenGL ES в вызовы DirectX или Vulkan
Ссылки
Дополнительная литература
  • Гинзбург, Дэн; Пурномо, Будириджанто; Шрейнер, Дэйв; Мунши, Афтаб (2014). Руководство по программированию OpenGL ES 3.0. Эддисон-Уэсли Профессионал. ISBN 978-0-321-93388-1.
  • Пулли, Кари; Аарнио, Томи; Миеттинен, Вилле; Роймела, Киммо и Ваарала, Яни (2007). Мобильная 3D-графика с OpenGL ES и M3G. Морган Кауфманн. ISBN 978-0-12-373727-4.
  • Эстл, Дэйв и Дурнил, Дэвид (2004). Разработка игр OpenGL ES. Курс Технологии PTR. ISBN 1-59200-370-2.
  • Пулли, Кари; Аарнио, Томи; Роймела, Киммо и Ваарала, Яни. Разработка графических интерфейсов программирования для мобильных устройств. IEEE CGA 2005. doi : 10.1109 / MCG.2005.129.
Внешние ссылки
В Wikibooks есть книга по теме: Программирование OpenGL / Обзор OpenGL ES
Последняя правка сделана 2021-06-01 12:36:59
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте