Логотип 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, предназначен для более простых высокопроизводительных драйверов для мобильных и настольных устройств.
Сейчас существует несколько версий спецификации 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 был публично выпущен 28 июля 2003 года. OpenGL ES 1.0 основан на исходном API OpenGL 1.3, при этом большая часть функций удалена и немного добавлена. Одно существенное различие между OpenGL и OpenGL ES заключается в том, что OpenGL ES устранил необходимость заключать в скобки вызовы библиотеки OpenGL с помощью glBegin
и glEnd
. Другие существенные отличия заключаются в том, что семантика вызова для примитивных функций визуализации была изменена в пользу массивов вершин, а для координат вершин были введены типы данных с фиксированной точкой. Также были добавлены атрибуты для лучшей поддержки вычислительных возможностей встроенных процессоров, которым часто не хватает блока с плавающей запятой (FPU). Многие другие функции и примитивы рендеринга были удалены в версии 1.0 для создания облегченного интерфейса, включая:
ARB_Image
не поддерживаются, а также растровые изображения или 3D-текстуры,Фактическая версия - 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 добавлены функции, такие как обязательная поддержка для мультитекстур, улучшенная поддержка мультитекстур (включая комбайнеры и операции с точечным произведением текстуры), автоматическое создание 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 был публично выпущен в марте 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 | ||
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 была публично выпущена в августе 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 была выпущена публично. в марте 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 была публично выпущена в августе 2015. Новые возможности в OpenGL ES 3.2 включают: шейдеры
Фактическое состояние: 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) | |||
Расширение OpenGL ES # 267 |
Еще несколько расширений разработаны или находятся в разработке в Mesa для следующей версии OpenGL ES (см. Mesamatrix).
API следующего поколения - Vulkan.
Полный список компаний и их совместимых продуктов см. здесь
OpenGL ES 1.0 добавил официальную 3D-графику API в операционные системы Android и Symbian, а также в QNX It также поддерживается PlayStation 3 в качестве одного из официальных графических API-интерфейсов (другой является библиотекой низкого уровня libgcm) с Nvidia Cg вместо GLSL. PlayStation 3 также включает несколько функций версии 2.0 OpenGL ES.
Версия 1.1 OpenGL ES поддерживается:
Поддерживается:
Поддерживается:
Поддерживается некоторыми последними версиями этих графических процессоров:
Поддерживается Windows, Linux, Android (начиная с версии 5.0) на устройствах с соответствующим оборудованием и драйверами, в том числе:
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, включая 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) на устройствах с соответствующим оборудованием и драйверами, включая:
OpenGL ES (и OpenGL) - устарело в операционных системах Apple, но все еще работает как минимум в iOS 12.
Нет планов для новой базовой версии, потому что Vulkan импульс вытесняет его
Было создано несколько библиотек для эмуляции вызовов OpenGL с использованием GL ES:
В Wikibooks есть книга по теме: Программирование OpenGL / Обзор OpenGL ES |