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.
Version 1.0 and 1.1 both have common (CM) and common lite (CL) 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 (FPU). Many other functions and rendering primitives were removed in version 1.0 to produce a lightweight interface, including:
quad and polygon rendering primitives;
texgen, line, and polygon stipple;
polygon mode and antialiased polygon rendering are not supported, although rendering using multisample is still possible (rather than alpha border fragments);
ARB_Image pixel class operations, bitmaps, and 3D textures are not supported;
several of the more technical drawing modes are eliminated, including frontbuffer and accumulation buffer;
bitmap operations for copying pixels individually, evaluators, and user selection operations are not allowed;
display lists and feedback are removed, as are push and pop operations for state attributes;
and some material parameters were removed, including back-face parameters and user-defined clip planes.
OpenGL ES 1.1 added features such as mandatory support for multitexture, better multitexture support (including combiners and dot product texture operations), automatic mipmap generation, vertex buffer objects, state queries, user clip planes, and greater control over point rendering.[7]
Actual Version is 1.1.12.[8]
OpenGL ES 2.0 was publicly released in March 2007.[10] 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.[11] 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.[12] 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.[13]
Actual version is 2.0.25.[14]
The Khronos Group has written a document describing the differences between OpenGL ES 2.0 and ordinary OpenGL 2.0.[15]
The OpenGL ES 3.0 specification[17] was publicly released in August 2012.[18] It is backwards compatible with OpenGL ES 2.0, and partially compatible with WebGL 2.0,[19] as WebGL 2.0 was designed to have a high degree of interoperability with OpenGL ES 3.0.[20]
The current version of the OpenGL ES 3.0 standard is 3.0.6, released in November 2019.[21]
New functionality in the OpenGL ES 3.0 specification includes:
greatly enhanced texturing functionality including guaranteed support for floating point textures, 3D textures, depth textures, vertex textures, NPOT textures, R/RG textures, immutable textures, 2D array textures, swizzles, LOD and mip level clamps, seamless cube maps and sampler objects;
an extensive set of required, explicitly sized texture and render-buffer formats, reducing implementation variability and making it much easier to write portable applications.
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-(November 2016).[25]
For complete list of companies and their conformant products, view here
OpenGL ES 1.0
OpenGL ES 1.0 added an official 3D graphics API to the Android[30] and Symbian OS v8.0a[31][32] operating systems, as well as by QNX[33] It is also supported by the PlayStation 3 as one of its official graphics APIs[34] (the other one being low level libgcm library) with Nvidia's Cg in lieu of GLSL.[35] The PlayStation 3 also includes several features of the 2.0 version of OpenGL ES.
VIRGL: virtual Driver for virtual machines in 2018 with Mesa 18.1 (See Mesamatrix.net)
LLVMpipe: software driver in Mesa 20.2 (Linux)
softpipe: software driver in Mesa 20.3 (Linux)
Zink: emulation driver in Mesa 21.1 (Linux)
d3d12: WSL2 linux driver for Microsoft 10+ (Mesa 22.0)
Apple M1 and M2 graphics in Fedora Asahi Remix (Linux)
Android Extension Pack
Android Extension Pack (AEP) 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.[53]
OpenGL ES 3.2
OpenGL ES 3.2, incorporating the Android Extension Pack (AEP), "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."[54][3]
Supported by Windows, Linux, Android (since version 6.0 possible, 7.0+ Vulkan 1.0 and OpenGL ES 3.2 needed) on devices with appropriate hardware and drivers, including:
Nvidia GeForce 400 series (Fermi) and newer (Windows, Linux)[55]
VIRGL: virtual Driver for virtual machines in 2018 with Mesa 18.1 (See Mesamatrix.net)
LLVMpipe: software driver in Mesa 20 (Linux)
Zink: Vulkan emulation driver in Mesa 21.2 (Linux)
Deprecation in Apple platforms
OpenGL ES (and OpenGL) was deprecated in Apple's operating systems in favour of its own proprietary Metalgraphics API, but still worked in up to at least iOS 12.[56]
The future
There is currently no plan for a new core version of OpenGL ES, as adoption of Vulkan has been deemed to displace it in embedded and mobile applications. Development of extensions to OpenGL ES continues as of 2017.
[57]
OpenGL compatibility
This section needs expansion. You can help by adding to it. (September 2014)
A few libraries have been created to emulate OpenGL calls using GL ES:
Nvidia offers a 2-clause BSD licensed library called Regal, originally started by Cass Everitt. It was last updated in 2016.[58] Regal is used for example by Google's NaCl.[59]
The MIT licensed GL4ES emulates OpenGL 2.1/1.5 using GL ES 2.0/1.1. It is based on glshim.[60]
See also
Direct3D – Windows API for high-performance 3D graphics, with 3D acceleration hardware support
DirectX – Windows API for handling tasks related to graphics and video
Metal – low level, high-performance 3D accelerated graphics library for Apple platforms
OpenSL ES – API for audio on embedded systems, developed by the Khronos Group
ANGLE (software) – Google developed library to turn OpenGL ES calls into those of DirectX or Vulkan
^Edward Angel, Dave Shreiner, Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL, 6th Edition, p. xxi-xxii, ISBN978-0-13-254523-5
^Apple Inc. "What's New in iOS - Apple Developer". developer.apple.com. Retrieved 2018-08-07. Apps built using OpenGL ES will continue to run in iOS 12, but OpenGL ES is deprecated in iOS 13.
Pulli, Kari; Aarnio, Tomi; Miettinen, Ville; Roimela, Kimmo & Vaarala, Jani (2007). Mobile 3D Graphics with OpenGL ES and M3G. Morgan Kaufmann. ISBN978-0-12-373727-4.