OpenGL ES


OpenGL for Embedded Systems is a subset of the OpenGL computer graphics rendering application programming interface for rendering 2D and 3D computer graphics such as those used by video games, typically hardware-accelerated using a graphics processing unit. It is designed for embedded systems like smartphones, tablet computers, video game consoles and PDAs. OpenGL ES is the "most widely deployed 3D graphics API in history".
The API is cross-language and multi-platform. The libraries GLUT and GLU are not available for OpenGL ES. OpenGL ES is managed by the non-profit technology consortium Khronos Group. Vulkan, a next-generation API from Khronos, is made for simpler high performance drivers for mobile and desktop devices.

Versions

Several versions of the OpenGL ES specification now exist. OpenGL ES 1.0 is drawn up against the OpenGL 1.3 specification, OpenGL ES 1.1 is defined relative to the OpenGL 1.5 specification and OpenGL ES 2.0 is defined relative to the OpenGL 2.0 specification. This means that, for example, an application written for OpenGL ES 1.0 should be easily portable to the desktop OpenGL 1.3; as the OpenGL ES is a stripped-down version of the API, the reverse may or may not be true, depending on the particular features used.
OpenGL ES comes with its own version of shading language, which is different from OpenGL SL.
Version 1.0 and 1.1 both have common and common lite profiles, the difference being that the common lite profile only supports fixed-point instead of floating point data type support, whereas common supports both.

OpenGL ES 1.0

OpenGL ES 1.0 was released publicly July 28, 2003. OpenGL ES 1.0 is based on the original OpenGL 1.3 API, with much functionality removed and a little bit added. One significant difference between OpenGL and OpenGL ES is that OpenGL ES removed the need to bracket OpenGL library calls with glBegin and glEnd. Other significant differences are that the calling semantics for primitive rendering functions were changed in favor of vertex arrays, and fixed-point data types were introduced for vertex coordinates. Attributes were also added to better support the computational abilities of embedded processors, which often lack a floating point unit. Many other functions and rendering primitives were removed in version 1.0 to produce a lightweight interface, including:
Actual version is 1.0.0.2.
Extension NameSort #NumberDetails
OpenGL ES Extension #4
OpenGL ES Extension #6
OpenGL ES Extension #9
OpenGL ES Extension #16
OpenGL ES Extension #17
OpenGL ES Extension #18
optionalMesa
OpenGL ES Extension #5

OpenGL ES 1.1

OpenGL ES 1.1 added features such as mandatory support for multitexture, better multitexture support, automatic mipmap generation, vertex buffer objects, state queries, user clip planes, and greater control over point rendering.
Actual Version is 1.1.12.
Extension NameSort #Number
OpenGL ES Extension #7
OpenGL ES Extension #11
OpenGL ES Extension #14
OpenGL ES Extension #15
optionalMesa
OpenGL ES Extension #23
OpenGL ES Extension #87
OpenGL ES Extension # TBD

OpenGL ES 2.0

OpenGL ES 2.0 was publicly released in March 2007. It is roughly based on OpenGL 2.0, but it eliminates most of the fixed-function rendering pipeline in favor of a programmable one in a move similar to the transition from OpenGL 3.0 to 3.1. Control flow in shaders is generally limited to forward branching and to loops where the maximum number of iterations can easily be determined at compile time. Almost all rendering features of the transform and lighting stage, such as the specification of materials and light parameters formerly specified by the fixed-function API, are replaced by shaders written by the graphics programmer. As a result, OpenGL ES 2.0 is not backward compatible with OpenGL ES 1.1. Some incompatibilities between the desktop version of OpenGL and OpenGL ES 2.0 persisted until OpenGL 4.1, which added the GL_ARB_ES2_compatibility extension.
Actual version is 2.0.25.
The Khronos Group has written a document describing the differences between OpenGL ES 2.0 and ordinary OpenGL 2.0.
Extension NameSort #Number
OpenGL ES Extension #20
OpenGL ES Extension #37
OpenGL ES Extension #24
OpenGL ES Extension #44
OpenGL ES Extension #26
OpenGL ES Extension #27
OpenGL ES Extension #47
OpenGL ES Extension #29
OpenGL ES Extension #43
OpenGL ES Extension #30
OpenGL ES Extension #33
OpenGL ES Extension #38
additionalin MESA
OpenGL ES Extension #23
OpenGL ES Extension #87
OpenGL ES Extension #35, extended in ES 3.0 and 3.1
OpenGL ES Extension #36, extended in ES 3.0 and 3.1
OpenGL ES Extension #45
OpenGL ES Extension #116
OpenGL ES Extension #136
OpenGL ES Extension #41
OpenGL ES Extension #42
OpenGL ES Extension #49
OpenGL ES Extension #51
OpenGL ES Extension #64
OpenGL ES Extension #65
OpenGL ES Extension #66
OpenGL ES Extension #69
OpenGL ES Extension #86
OpenGL ES Extension #90
OpenGL ES Extension #103
OpenGL ES Extension #151
OpenGL ES Extension #188
OpenGL ES Extension #91
OpenGL ES Extension #92
OpenGL ES Extension #93
OpenGL ES Extension #94
OpenGL ES Extension #111

OpenGL ES 3.0

The OpenGL ES 3.0 specification was publicly released in August 2012. OpenGL ES 3.0 is backwards compatible with OpenGL ES 2.0, enabling applications to incrementally add new visual features to applications. OpenGL 4.3 provides full compatibility with OpenGL ES 3.0. Version 3.0 is also the basis for WebGL 2.0.
Actual is version 3.0.6.
New functionality in the OpenGL ES 3.0 specification includes:
Extension NameSort #NumberDetails
OpenGL ES Extension #71
OpenGL ES Extension #191
additionalin MESA
OpenGL ES Extension #162
OpenGL ES Extension #182
OpenGL ES Extension #204
OpenGL ES Extension #220
OpenGL ES Extension #495

OpenGL ES 3.1

The OpenGL ES 3.1 specification was publicly released in March 2014.
New functionality in OpenGL ES 3.1 includes:
OpenGL ES 3.1 is backward compatible with OpenGL ES 2.0 and 3.0, thus enabling applications to incrementally incorporate new features. Actual Version is 3.1-.
Extension NameSort #Number
ARB Extension #120
ARB Extension #122
ARB Extension #128
ARB Extension #130
ARB Extension #134
ARB Extension #114
ARB Extension #115
ARB Extension #137
ARB Extension #97
ARB Extension #138
ARB Extension #125
ARB Extension #87
ARB Extension #116
ARB Extension #136
ARB Extension #141
ARB Extension #67
OpenGL ES Extension #161
optionalMesa
ARB Extension #181
OpenGL ES Extension #218
OpenGL ES Extension #200
OpenGL ES Extension #206
OpenGL ES Extension #207

OpenGL ES 3.2

The OpenGL ES 3.2 specification was publicly released in August 2015.
New capabilities in OpenGL ES 3.2 include:
Actual State is 3.2.6 July 2019.
Extension NameSort #Number
OpenGL ES Extension #168
OpenGL ES Extension #137
OpenGL ES Extension #118
OpenGL ES Extension #190
OpenGL ES Extension #208
OpenGL ES Extension #209
OpenGL ES Extension #219
OpenGL ES Extension #210
OpenGL ES Extension #211
OpenGL ES Extension #169
OpenGL ES Extension #170
OpenGL ES Extension #171
OpenGL ES Extension #213
OpenGL ES Extension #172
OpenGL ES Extension #214
OpenGL ES Extension #215
OpenGL ES Extension #216
OpenGL ES Extension #217
OpenGL ES Extension #173
OpenGL ES Extension #174
OpenGL ES Extension #117
OpenGL ES Extension #212
optionalMesa
OpenGL ES Extension #117, ARB Extension #118
OpenGL ES Extension #168
OpenGL ES Extension #249

OpenGL ES Extension #267

Some more extensions are developed or in Development in Mesa for next OpenGL ES Version.
Next generation API is Vulkan.

Platform usage

For complete list of companies and their conformant products, view

OpenGL ES 1.0

OpenGL ES 1.0 added an official 3D graphics API to the Android and Symbian operating systems, as well as by QNX It is also supported by the PlayStation 3 as one of its official graphics APIs with Nvidia's Cg in lieu of GLSL. The PlayStation 3 also includes several features of the 2.0 version of OpenGL ES.

OpenGL ES 1.1

The 1.1 version of OpenGL ES is supported by:
Supported by:
Supported by:
Supported by some recent versions of these GPUs:
Supported by Windows, Linux, Android on devices with appropriate hardware and drivers, including:
Android Extension Pack is a set of OpenGL ES 3.1 extensions, all bundled into a single extension introduced by Google in 2014. This allows applications to use all of the features of the set of extensions, while only testing for the presence of a single one. The AEP was officially added to Android Lollipop to provide extra features like tessellation over what was officially in the GLES 3.1 revision. OpenGL ES 3.2 update is largely made up of the AEP additions, which are already present in desktop OpenGL.

OpenGL ES 3.2

OpenGL ES 3.2, incorporating the Android Extension Pack, "boasts a small number of improvements over last year’s OpenGL ES 3.1. Both make use of similar features from the AEP. From the AEP, OpenGL ES 3.2 compliant hardware will support Tessellation for additional geometry detail, new geometry shaders, ASTC texture compression for a smaller memory bandwidth footprint, floating point render targets for high accuracy compute processes, and new debugging features for developers. These high-end features are already found in the group’s full OpenGL 4 specification."
Supported by Windows, Linux, Android on devices with appropriate hardware and drivers, including:
OpenGL ES is deprecated in Apple's operating systems, but still works in up to at least iOS 12.

The Future

No plan for new core version, because Vulkan's momentum is displacing it

OpenGL compatibility

A few libraries have been created to emulate OpenGL calls using GL ES: