OpenGL ES - OpenGL ES
Originalautor(en) | ARB |
---|---|
Entwickler | Chronos-Gruppe |
Erstveröffentlichung | 28. Juli 2003 |
Stabile Version | 3.2 / 10. August 2015
|
Betriebssystem | Plattformübergreifend |
Plattform | Plattformübergreifend |
Typ | API |
Lizenz | Kostenlos, lizenzgebührenfrei oder lizenzfrei |
Webseite | www |
OpenGL für eingebettete Systeme ( OpenGL ES oder GLES ) ist eine Teilmenge der OpenGL Computer Graphics Rendering Application Programming Interface (API) zum Rendern von 2D- und 3D-Computergrafiken, wie sie von Videospielen verwendet werden , typischerweise hardwarebeschleunigt mit einer Grafikverarbeitungseinheit ( GPU). Es ist für eingebettete Systeme wie Smartphones , Tablet-Computer , Videospielkonsolen und PDAs konzipiert . OpenGL ES ist die "am weitesten verbreitete 3D-Grafik-API in der Geschichte".
Die API ist sprach- und plattformübergreifend . Die Bibliotheken GLUT und GLU sind für OpenGL ES nicht verfügbar. OpenGL ES wird von dem verwalteten Non-Profit - Technologie Konsortium Khronos Group . Vulkan , eine API der nächsten Generation von Khronos, wurde für einfachere Hochleistungstreiber für mobile und Desktop-Geräte entwickelt.
Versionen
Inzwischen existieren mehrere Versionen der OpenGL ES-Spezifikation. OpenGL ES 1.0 wird gegen die OpenGL 1.3-Spezifikation erstellt, OpenGL ES 1.1 wird relativ zur OpenGL 1.5-Spezifikation definiert und OpenGL ES 2.0 wird relativ zur OpenGL 2.0-Spezifikation definiert. Das bedeutet, dass beispielsweise eine für OpenGL ES 1.0 geschriebene Anwendung leicht auf den Desktop OpenGL 1.3 portierbar sein sollte; Da OpenGL ES eine abgespeckte Version der API ist, kann das Gegenteil der Fall sein oder nicht, je nach den verwendeten speziellen Funktionen.
OpenGL ES wird mit einer eigenen Version der Shading-Sprache (OpenGL ES SL) geliefert, die sich von OpenGL SL unterscheidet .
Version 1.0 und 1.1 haben beide Common (CM) und Common Lite (CL) Profile, mit dem Unterschied, dass das Common Lite- Profil nur Festkomma- statt Gleitkomma- Datentypen unterstützt, während Common beide unterstützt.
OpenGL ES 1.0
OpenGL ES 1.0 wurde am 28. Juli 2003 veröffentlicht. OpenGL ES 1.0 basiert auf der ursprünglichen OpenGL 1.3-API, wobei viele Funktionen entfernt und ein wenig hinzugefügt wurden. Ein wesentlicher Unterschied zwischen OpenGL und OpenGL ES besteht darin, dass OpenGL ES die Notwendigkeit beseitigt hat, OpenGL-Bibliotheksaufrufe mit glBegin
und einzuschließen glEnd
. Andere wesentliche Unterschiede bestehen darin, dass die Aufrufsemantik für primitive Rendering-Funktionen zugunsten von Vertex-Arrays geändert wurde und Festkomma- Datentypen für Vertex-Koordinaten eingeführt wurden. Außerdem wurden Attribute hinzugefügt, um die Rechenfähigkeiten von eingebetteten Prozessoren besser zu unterstützen, denen oft eine Gleitkommaeinheit (FPU) fehlt . Viele andere Funktionen und Rendering-Primitive wurden in Version 1.0 entfernt, um eine schlanke Benutzeroberfläche zu erstellen, darunter:
- Quad- und Polygon-Rendering-Primitive,
- texgen, Linien- und Polygon-Stipple,
- Polygon-Modus und Antialiasing-Polygon-Rendering werden nicht unterstützt, obwohl das Rendern mit Multisample weiterhin möglich ist (anstelle von Alpha-Grenzfragmenten),
-
ARB_Image
Pixelklassenoperationen werden nicht unterstützt, ebenso wenig wie Bitmaps oder 3D-Texturen, - einige der eher technischen Zeichnungsmodi werden eliminiert, einschließlich Frontbuffer und Akkumulationspuffer. Bitmap-Operationen, insbesondere das Kopieren von Pixeln (einzeln) sind nicht erlaubt, ebenso wenig Evaluatoren, noch (Benutzer-)Auswahloperationen,
- Anzeigelisten und Feedback werden ebenso entfernt wie Push- und Pop-Operationen für Statusattribute,
- Einige Materialparameter wurden entfernt, darunter Parameter für die Rückseite und benutzerdefinierte Schnittebenen.
Die aktuelle Version ist 1.0.0.2.
Nebenstellenname | #Nummer sortieren | Einzelheiten |
---|---|---|
OES_byte_coordinates | OpenGL ES-Erweiterung #4 | (ehemals OpenGL-Erweiterung #291) |
OES_compressed_paletted_texture | OpenGL ES-Erweiterung #6 | (ehemals OpenGL-Erweiterung #294) |
OES_fixed_point | OpenGL ES-Erweiterung #9 | (ehemals OpenGL-Erweiterung #292) |
OES_query_matrix | OpenGL ES-Erweiterung #16 | (ehemals OpenGL-Erweiterung #296) |
OES_read_format | OpenGL ES-Erweiterung #17 | (ehemals OpenGL-Erweiterung #295) |
OES_single_precision | OpenGL ES-Erweiterung #18 | (ehemals OpenGL-Erweiterung #293) |
Optional | Mesa (die meisten Treiber) | |
OES_compressed_ETC1_RGB8_texture | OpenGL ES-Erweiterung #5 |
OpenGL ES 1.1
OpenGL ES 1.1 fügte Funktionen hinzu, wie z. B. obligatorische Unterstützung für Multitexture, bessere Multitexture-Unterstützung (einschließlich Combiner und Punktprodukt- Texturoperationen ), automatische Mipmap- Generierung, Vertex-Puffer-Objekte , Zustandsabfragen, Benutzer-Clip-Ebenen und größere Kontrolle über das Punkt-Rendering. Die aktuelle Version ist 1.1.12.
Nebenstellenname | #Nummer sortieren |
---|---|
OES_draw_texture | OpenGL ES-Erweiterung #7 |
OES_matrix_get | OpenGL ES-Erweiterung #11 |
OES_point_size_array | OpenGL ES-Erweiterung #14 |
OES_point_sprite | OpenGL ES-Erweiterung #15 |
Optional | Mesa (alle Treiber) |
OES_EGL_image | OpenGL ES-Erweiterung #23 |
OES_EGL_image_external | OpenGL ES-Erweiterung #87 |
OES_required_internalformat | OpenGL ES-Erweiterung # TBD |
OpenGL ES 2.0
OpenGL ES 2.0 wurde im März 2007 öffentlich veröffentlicht. Es basiert grob auf OpenGL 2.0, eliminiert jedoch den Großteil der Rendering-Pipeline mit festen Funktionen zugunsten einer programmierbaren, ähnlich wie beim Übergang von OpenGL 3.0 zu 3.1. Der Kontrollfluss in Shadern ist im Allgemeinen auf Vorwärtsverzweigungen und Schleifen beschränkt, bei denen die maximale Anzahl von Iterationen zur Kompilierzeit leicht bestimmt werden kann. Fast alle Rendering-Funktionen der Transformations- und Beleuchtungsstufe, wie die Spezifikation von Materialien und Lichtparametern, die früher von der Fixed-Function-API festgelegt wurden, werden durch vom Grafikprogrammierer geschriebene Shader ersetzt . Daher ist OpenGL ES 2.0 nicht abwärtskompatibel mit OpenGL ES 1.1. Einige Inkompatibilitäten zwischen der Desktop-Version von OpenGL und OpenGL ES 2.0 bestanden bis OpenGL 4.1, das die GL_ARB_ES2_compatibility
Erweiterung hinzufügte . Die aktuelle Version ist 2.0.25.
Die Khronos Group hat ein Dokument geschrieben, das die Unterschiede zwischen OpenGL ES 2.0 und gewöhnlichem OpenGL 2.0 beschreibt.
Nebenstellenname | #Nummer sortieren |
---|---|
OES_texture_cube_map | OpenGL ES-Erweiterung #20 |
OES_texture_npot | OpenGL ES-Erweiterung #37 |
OES_Tiefe24 | OpenGL ES-Erweiterung #24 |
OES_depth_texture | OpenGL ES-Erweiterung #44 |
OES_element_index_uint | OpenGL ES-Erweiterung #26 |
OES_fbo_render_mipmap | OpenGL ES-Erweiterung #27 |
OES_get_program_binary | OpenGL ES-Erweiterung #47 |
OES_mapbuffer | OpenGL ES-Erweiterung #29 |
OES_packed_depth_stencil | OpenGL ES-Erweiterung #43 |
OES_rgb8_rgba8 | OpenGL ES-Erweiterung #30 |
OES_stencil8 | OpenGL ES-Erweiterung #33 |
OES_vertex_array_object | OpenGL ES-Erweiterung #71 |
OES_vertex_half_float | OpenGL ES-Erweiterung #38 |
zusätzlich | in MESA (alle Treiber) |
OES_EGL_image | OpenGL ES-Erweiterung #23 (anders als 1.1) |
OES_EGL_image_external | OpenGL ES-Erweiterung #87 (anders als 1.1) |
OES_texture_float_linear OES_texture_half_float_linear | OpenGL ES Extension #35, erweitert in ES 3.0 und 3.1 |
OES_texture_float OES_texture_half_float | OpenGL ES Extension #36, erweitert in ES 3.0 und 3.1 |
OES_standard_derivatives | OpenGL ES-Erweiterung #45 |
OES_surfaceless_context | OpenGL ES-Erweiterung #116 |
OES_depth_texture_cube_map | OpenGL ES-Erweiterung #136 |
EXT_texture_filter_anisotrop | OpenGL ES-Erweiterung Nr. 41 |
EXT_texture_type_2_10_10_10_REV | OpenGL ES-Erweiterung #42 |
EXT_texture_compression_dxt1 | OpenGL ES-Erweiterung #49 |
EXT_texture_format_BGRA8888 | OpenGL ES-Erweiterung #51 |
EXT_discard_framebuffer | OpenGL ES-Erweiterung #64 |
EXT_blend_minmax | OpenGL ES-Erweiterung #65 |
EXT_read_format_bgra | OpenGL ES-Erweiterung #66 |
EXT_multi_draw_arrays | OpenGL ES-Erweiterung #69 |
EXT_frag_depth | OpenGL ES-Erweiterung #86 |
EXT_unpack_subimage | OpenGL ES-Erweiterung #90 |
EXT_texture_rg | OpenGL ES-Erweiterung Nr. 103 |
EXT_draw_buffers | OpenGL ES-Erweiterung #151 |
EXT_compressed_ETC1_RGB8_sub_texture | OpenGL ES-Erweiterung #188 |
NV_draw_buffers | OpenGL ES-Erweiterung #91 |
NV_fbo_color_attachments | OpenGL ES-Erweiterung #92 |
NV_read_buffer | OpenGL ES-Erweiterung #93 |
NV_read_depth_stencil | OpenGL ES-Erweiterung #94 |
ANGLE_texture_compression_dxt | OpenGL ES-Erweiterung #111 |
OpenGL ES 3.0
Die OpenGL ES 3.0-Spezifikation wurde im August 2012 veröffentlicht. OpenGL ES 3.0 ist abwärtskompatibel mit OpenGL ES 2.0, sodass Anwendungen inkrementell neue visuelle Funktionen zu Anwendungen hinzufügen können. OpenGL 4.3 bietet volle Kompatibilität mit OpenGL ES 3.0. Version 3.0 ist auch die Basis für WebGL 2.0. Aktuell ist Version 3.0.6.
Zu den neuen Funktionen in der OpenGL ES 3.0-Spezifikation gehören:
- mehrere Verbesserungen an der Rendering-Pipeline , um die Beschleunigung fortgeschrittener visueller Effekte zu ermöglichen, einschließlich: Okklusionsabfragen , Transformations-Feedback , instanziiertes Rendering und Unterstützung für vier oder mehr Rendering-Ziele ,
- hochwertige ETC2- / EAC- Texturkomprimierung als Standardfunktion, wodurch für jede Plattform kein unterschiedlicher Satz von Texturen erforderlich ist ,
- eine neue Version der GLSL ES- Schattierungssprache mit voller Unterstützung für Ganzzahl- und 32-Bit- Gleitkommaoperationen ;
- stark verbesserte Texturierung Funktionalität einschließlich garantierter Unterstützung Gleitkomma- Texturen, 3D - Texturen, Tiefe Texturen, Vertex Texturen, NPOT Texturen, R / RG Texturen, unveränderliche Texturen, 2D - Array Texturen, Swizzles , LOD und mip Ebene Klemmen, nahtlosen Würfels Karten und sampler Objekte ,
- ein umfangreicher Satz erforderlicher Textur- und Renderpufferformate mit expliziter Größe , wodurch die Variabilität der Implementierung reduziert und das Schreiben portabler Anwendungen erheblich erleichtert wird.
Nebenstellenname | #Nummer sortieren | Einzelheiten |
---|---|---|
KHR_context_flush_control | OpenGL ES-Erweiterung #191 | (nur für GL_KHR_context_flush_control) |
zusätzlich | in MESA (alle Treiber) | |
OES_texture_compression_astc | OpenGL ES-Erweiterung #162 | |
EXT_texture_border_clamp | OpenGL ES-Erweiterung #182 | |
EXT_draw_elements_base_vertex | OpenGL ES-Erweiterung #204 | |
OES_EGL_image_external_essl3 | OpenGL ES-Erweiterung #220 | |
MESA_shader_integer_functions | OpenGL ES-Erweiterung #495 |
OpenGL ES 3.1
Die OpenGL ES 3.1-Spezifikation wurde im März 2014 veröffentlicht. Zu den neuen Funktionen von OpenGL ES 3.1 gehören:
- Computing-Shader
- Unabhängige Vertex- und Fragment-Shader
- Indirekte Zeichenbefehle
OpenGL ES 3.1 ist abwärtskompatibel mit OpenGL ES 2.0 und 3.0, sodass Anwendungen schrittweise neue Funktionen integrieren können. Die aktuelle Version ist 3.1-(November 2016).
Nebenstellenname | #Nummer sortieren |
---|---|
ARB_arrays_of_arrays | ARB-Erweiterung #120 |
ARB_compute_shader | ARB-Erweiterung #122 |
ARB_explicit_uniform_location | ARB-Erweiterung #128 |
ARB_framebuffer_no_attachments | ARB-Erweiterung #130 |
ARB_program_interface_query | ARB-Erweiterung #134 |
ARB_shader_atomic_counters | ARB-Erweiterung #114 |
ARB_shader_image_load_store | ARB-Erweiterung #115 |
ARB_shader_storage_buffer_object | ARB-Erweiterung #137 |
ARB_separate_shader_objects | ARB-Erweiterung #97 |
ARB_stencil_texturing | ARB-Erweiterung #138 |
ARB_vertex_attrib_binding | ARB-Erweiterung #125 |
ARB_draw_indirect | ARB-Erweiterung #87 |
ARB_shading_language_packing | ARB-Erweiterung #116 |
ARB_shader_image_size | ARB-Erweiterung #136 |
ARB_texture_storage_multisample | ARB-Erweiterung #141 |
ARB_texture_multisample | ARB-Erweiterung #67 |
EXT_shader_integer_mix | OpenGL ES-Erweiterung #161 |
Optional | Mesa (alle Treiber OpenGL ES 3.1+) |
ARB_sample_locations | ARB-Erweiterung #181 |
OES_texture_view | OpenGL ES-Erweiterung #218 |
NV_Bildformate | OpenGL ES-Erweiterung #200 |
EXT_render_snorm | OpenGL ES-Erweiterung #206 |
EXT_texture_norm16 | OpenGL ES-Erweiterung #207 |
OpenGL ES 3.2
Die OpenGL ES 3.2-Spezifikation wurde im August 2015 öffentlich veröffentlicht. Zu den neuen Funktionen von OpenGL ES 3.2 gehören:
- Geometrie- und Tessellations- Shader zur effizienten Verarbeitung komplexer Szenen auf der GPU.
- Gleitkomma-Renderziele für mehr Flexibilität bei Rechenoperationen mit höherer Präzision.
- ASTC-Komprimierung zur Reduzierung des Speicherbedarfs und der Bandbreite, die zum Verarbeiten von Texturen verwendet werden.
- Verbessertes Mischen für anspruchsvolles Compositing und Handhabung von mehreren Farbanhängen.
- Erweiterte Texturziele wie Texturpuffer, Multisample-2D-Arrays und Cube-Map-Arrays.
- Debug- und Robustheitsfunktionen für eine einfachere Codeentwicklung und sichere Ausführung.
Aktueller Stand ist 3.2.6 Juli 2019.
Nebenstellenname | #Nummer sortieren |
---|---|
KHR_blend_equation_advanced | OpenGL ES-Erweiterung #168 |
EXT_color_buffer_float | OpenGL ES-Erweiterung #137 |
KHR_debug | OpenGL ES-Erweiterung #118 |
KHR_Robustheit | OpenGL ES-Erweiterung #190 |
OES_copy_image | OpenGL ES-Erweiterung #208 |
OES_draw_buffers_indexed | OpenGL ES-Erweiterung #209 |
OES_draw_elements_base_vertex | OpenGL ES-Erweiterung #219 |
OES_geometry_shader | OpenGL ES-Erweiterung #210 |
OES_gpu_shader5 | OpenGL ES-Erweiterung #211 |
OES_sample_shading | OpenGL ES-Erweiterung #169 |
OES_sample_variables | OpenGL ES-Erweiterung #170 |
OES_shader_image_atomic | OpenGL ES-Erweiterung #171 |
OES_shader_io_blocks | OpenGL ES-Erweiterung #213 |
OES_shader_multisample_interpolation | OpenGL ES-Erweiterung #172 |
OES_tessellation_shader | OpenGL ES-Erweiterung #214 |
OES_texture_border_clamp | OpenGL ES-Erweiterung #215 |
OES_texture_buffer | OpenGL ES-Erweiterung #216 |
OES_texture_cube_map_array | OpenGL ES-Erweiterung #217 |
OES_texture_stencil8 | OpenGL ES-Erweiterung #173 |
OES_texture_storage_multisample_2d_array | OpenGL ES-Erweiterung Nr. 174 |
KHR_texture_compression_astc_ldr | OpenGL ES-Erweiterung Nr. 117 (nur LDR) |
OES_primitive_bounding_box | OpenGL ES-Erweiterung #212 |
Optional | Mesa (alle Treiber OpenGL ES 3.2+) |
KHR_texture_compression_astc_hdr | OpenGL ES-Erweiterung Nr. 117 (LDR enthalten), ARB-Erweiterung Nr. 118 |
KHR_blend_equation_advanced_coherent | OpenGL ES-Erweiterung #168 |
KHR_texture_compression_astc_sliced_3d | OpenGL ES-Erweiterung Nr. 249 (ARB-Erweiterung Nr. 189) |
OpenGL ES-Erweiterung #267 |
Einige weitere Erweiterungen sind in Mesa für die nächste OpenGL ES-Version entwickelt oder in Entwicklung (siehe Mesamatrix).
Die API der nächsten Generation ist Vulkan.
Plattformnutzung
Eine vollständige Liste der Unternehmen und ihrer konformen Produkte finden Sie hier
OpenGL ES 1.0
OpenGL ES 1.0 eine offizielle 3D - Grafik hinzugefügt API zum Android und Symbian - Betriebssystemen sowie von QNX Es wird auch unterstützt durch die PlayStation 3 als eines seiner offiziellen Grafik - APIs (die andere ist niedrigem Niveau libgcm Bibliothek) mit Nvidias Cg anstelle von GLSL. Die PlayStation 3 enthält auch mehrere Funktionen der 2.0-Version von OpenGL ES.
OpenGL ES 1.1
Die 1.1-Version von OpenGL ES wird unterstützt von:
- Android 1.6
- Apple iOS für iPad , iPhone und iPod Touch
- RIMs BlackBerry 5.0-Betriebssystemserie (nur BlackBerry Storm 2 , BlackBerry Curve 8530 und spätere Modelle verfügen über die erforderliche Hardware)
- BlackBerry PlayBook
- BlackBerry BB10
- Verschiedene Nokia- Telefone wie Nokia N95, N93, N93i und N82.
- Palm webOS mit dem Plug-in Development Kit
- Nintendo 3DS
OpenGL ES 2.0
Unterstützt durch:
- Die Android-Plattform seit Android 2.0 bis NDK und Android 2.2 bis Java
- AmigaOS auf AmigaOne mit Warp3D Nova und kompatibler Radeon HD Grafikkarte.
- Apple iOS 5 oder höher in iPad , iPad Mini , iPhone 3GS oder höher und iPod Touch 3. Generation oder höher
- BlackBerry- Geräte mit BlackBerry OS 7.0 und Blackberry 10 sowie das BlackBerry PlayBook
- Nativer Google-Client
- Intel HD Graphics 965G / X3000 und höher (Linux)
- Nvidia (Android), Curie NV40+: Linux, Windows
- Verschiedene Nokia Telefone (wie Symbian ^3 basierendes Nokia N8 , MeeGo basierendes Nokia N9 und Maemo basierendes Nokia N900 )
- Palm webOS , mit dem Plug-in Development Kit
- Die Pandora- Konsole
- Der Himbeer-Pi
- Der Odroide
- Verschiedene Samsung -Mobiltelefone (wie das Wave )
- Webbrowser ( WebGL )
- Die GCW Zero- Konsole
- Die tragbare PlayStation Vita- Konsole
- Die PlayStation 4- Konsole
OpenGL ES 3.0
Unterstützt durch:
- Android seit Version 4.3, auf Geräten mit entsprechender Hardware und Treibern, einschließlich:
- Nexus 7 (2013)
- Nexus 4
- Nexus 5
- Nexus 10
- HTC Butterfly S
- HTC One / One Max
- LG G2
- LG G-Pad 8.3
- Der Raspberry Pi 4
- Samsung Galaxy J5
- Samsung Galaxy J5 (2016)
- Samsung Galaxy S4 (Snapdragon-Version)
- Samsung Galaxy S5
- Samsung Galaxy Note 3
- Samsung Galaxy Note 10.1 (Ausgabe 2014)
- Sony Xperia M
- Sony Xperia Z /ZL
- Sony Xperia Z1
- Sony Xperia Z Ultra
- Sony Xperia Tablet Z
- iOS seit Version 7, auf Geräten einschließlich:
- BlackBerry 10 OS seit Version 10.2, auf Geräten einschließlich:
Unterstützt von einigen neueren Versionen dieser GPUs:
- Adreno 300 und 400 Serie ( Android , BlackBerry 10 , Windows10 Windows RT )
- Mali T600-Serie ab (Android, Linux , Windows 7)
- PowerVR- Serie6 ( iOS , Linux)
- Vivante (Android, OS X 10.8.3, Windows 7)
- Nvidia (Android), Tesla G80+: Linux, Windows 7+
- Intel HD Graphics Sandy Bridge und höher (Linux)
- AMD Terascale und aktuelle GCN-Architektur (Windows, Linux)
- LLVMpipe und Softpipe: Softtreiber in Mesa
- VIRGL: virtueller Treiber für virtuelle Maschinen im Jahr 2018 mit Mesa 18.1 (Siehe Mesamatrix.net)
OpenGL ES 3.1
Unterstützt von Windows, Linux, Android (seit Version 5.0) auf Geräten mit entsprechender Hardware und Treibern, einschließlich:
- Adreno 400-Serie
- Adreno 500-Serie (Mesa 18.1 für Linux und Android)
- AMD Terascale und aktuelle GCN-Architektur (Windows, Linux (r600, radeonSI))
- Intel HD-Grafik für Intel Atom Z3700-Serie (Android)
- Intel HD-Grafik für Intel Celeron N- und J-Serie (Android)
- Intel HD-Grafik für Intel Pentium N- und J-Serie (Android)
- Intel HD Graphics Haswell und höher (Linux Mesa: bisherige Ivy Bridge fast ohne Schablonentexturierung)
- Mali T6xx (midgard) ab Serie (Android, Linux)
- Nvidia GeForce 400-Serie ab (Windows, Linux)
- Nvidia Tegra K1 (Android, Linux)
- Nvidia Tegra X1 (Android)
- PowerVR-Serie 6, 6XE, 6XT, 7XE und 7XT (Linux, Android)
- Ab Vivante GC2000-Serie (optional mit GC800 und GC1000)
- v3d: Treiber für Broadcom ARM Himbeer in Mesa (Linux)
- VIRGL: virtueller Treiber für virtuelle Maschinen im Jahr 2018 mit Mesa 18.1 (Siehe Mesamatrix.net)
- LLVMpipe: Softwaretreiber in Mesa 20.2 (Linux)
- softpipe: Softwaretreiber in Mesa 20.3 (Linux)
- Zink: Emulationstreiber in Mesa 21.1 (Linux)
Android-Erweiterungspaket
Android Extension Pack (AEP) ist eine Reihe von OpenGL ES 3.1-Erweiterungen, die alle in einer einzigen Erweiterung gebündelt sind, die 2014 von Google eingeführt wurde. Dadurch können Anwendungen alle Funktionen der Erweiterungen verwenden, während nur das Vorhandensein von a . getestet wird einzelne. Das AEP wurde offiziell zu Android Lollipop hinzugefügt, um zusätzliche Funktionen wie Tessellation über das, was offiziell in der GLES 3.1-Revision enthalten war, bereitzustellen. Das OpenGL ES 3.2-Update besteht größtenteils aus den AEP-Ergänzungen, die bereits in Desktop-OpenGL vorhanden sind.
OpenGL ES 3.2
OpenGL ES 3.2, das das Android Extension Pack (AEP) enthält, "bietet eine kleine Anzahl von Verbesserungen gegenüber OpenGL ES 3.1 des letzten Jahres. Beide verwenden ähnliche Funktionen des AEP. Von dem AEP wird OpenGL ES 3.2-kompatible Hardware Tessellation für zusätzliche Geometriedetails, neue Geometrie-Shader, ASTC-Texturkomprimierung für eine geringere Speicherbandbreite, Gleitkomma-Renderziele für hochgenaue Rechenprozesse und neue Debugging-Funktionen für Entwickler.Diese High-End-Funktionen sind bereits in der vollständigen OpenGL 4-Spezifikation der Gruppe enthalten ."
Unterstützt von Windows, Linux, Android (seit Version 6.0 möglich, 7.0+ Vulkan 1.0 und OpenGL ES 3.2 erforderlich) auf Geräten mit entsprechender Hardware und Treibern, darunter:
- Adreno 420 und neuer (Android, Linux (freedreno))
- AMD GCN-Architektur (Windows, Linux (Mesa 18.2 mit radeonSI))
- Intel HD Graphics Skylake und höher (Linux)
- Mali-T760 und neuer (Android, Linux)
- Nvidia GeForce 400-Serie (Fermi) und neuer (Windows, Linux)
- VIRGL: virtueller Treiber für virtuelle Maschinen im Jahr 2018 mit Mesa 18.1 (Siehe Mesamatrix.net)
- LLVMpipe: Softwaretreiber in Mesa 20 (Linux)
Einstellung auf Apple-Geräten
OpenGL ES (und OpenGL) ist in Apples Betriebssystemen veraltet , funktioniert aber immer noch bis mindestens iOS 12.
Die Zukunft
Derzeit ist keine neue Kernversion von OpenGL ES geplant, da angenommen wurde, dass die Einführung von Vulkan es in eingebetteten und mobilen Anwendungen verdrängt. Die Entwicklung von Erweiterungen für OpenGL ES wird ab 2017 fortgesetzt.
OpenGL-Kompatibilität
Es wurden einige Bibliotheken erstellt, um OpenGL-Aufrufe mit GL ES zu emulieren:
- Nvidia bietet eine 2-Klausel- BSD-lizensierte Bibliothek namens Regal an, die ursprünglich von Cass Everitt gestartet wurde. Es wurde zuletzt 2016 aktualisiert. Regal wird beispielsweise von Googles NaCl verwendet .
- Das vom MIT lizenzierte GL4ES emuliert OpenGL 2.1/1.5 unter Verwendung von GL ES 2.0/1.1. Es basiert auf glshim.
Siehe auch
- Direct3D – Windows-API für leistungsstarke 3D-Grafiken mit Unterstützung für 3D-Beschleunigungshardware
- DirectX – Windows-API zur Bearbeitung von Aufgaben im Zusammenhang mit Grafik und Video
- Metal – Low-Level, hochleistungsfähige 3D-beschleunigte Grafikbibliothek für Apple-Geräte
- OpenSL ES – API für Audio auf eingebetteten Systemen, entwickelt von der Khronos Group
- ANGLE (Software) – Von Google entwickelte Bibliothek, um OpenGL ES-Aufrufe in die von DirectX oder Vulkan umzuwandeln
Verweise
Weiterlesen
- Ginsburg, Dan; Purnomo, Budirijanto; Schreiner, Dave; Munshi, Aaftab (2014). OpenGL ES 3.0-Programmierhandbuch . Addison-Wesley-Profi. ISBN 978-0-321-93388-1.
- Pulli, Kari; Aarnio, Tomi; Miettinen, Ville; Roimela, Kimmo & Vaarala, Jani (2007). Mobile 3D-Grafik mit OpenGL ES und M3G . Morgan Kaufmann. ISBN 978-0-12-373727-4.
- Astle, Dave & Durnil, David (2004). OpenGL ES-Spielentwicklung . Kurs Technologie PTR. ISBN 1-59200-370-2.
- Pulli, Kari; Aarnio, Tomi; Roimela, Kimmo & Vaarala, Jani. Entwerfen von grafischen Programmierschnittstellen für mobile Geräte . IEEE CG&A 2005 . doi : 10.1109/MCG.2005.129 .