OpenGL for Embedded Systems (OpenGL ES or GLES) is a subset of the
OpenGL
OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardwa ...
computer graphics rendering application programming interface
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how t ...
(API) for rendering
2D and
3D computer graphics
3D computer graphics, or “3D graphics,” sometimes called CGI, 3D-CGI or three-dimensional computer graphics are graphics that use a three-dimensional representation of geometric data (often Cartesian) that is stored in the computer for th ...
such as those used by
video games, typically
hardware-accelerated using a
graphics processing unit (GPU). It is designed for
embedded systems like
smartphones
A smartphone is a portable computer device that combines mobile telephone and computing functions into one unit. They are distinguished from feature phones by their stronger hardware capabilities and extensive mobile operating systems, which ...
,
tablet computers,
video game consoles and
PDA
PDA may refer to:
Science and technology
* Patron-driven acquisition, a mechanism for libraries to purchase books
*Personal digital assistant, a mobile device
* Photodiode array, a type of detector
* Polydiacetylenes, a family of conducting poly ...
s. OpenGL ES is the "most widely deployed 3D graphics API in history".
The API is
cross-language and
multi-platform
In computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several computing platforms. Some cross-platform software r ...
. The
GLU library and the original
GLUT are not available for OpenGL ES,
freeglut however, supports it. OpenGL ES is managed by the
non-profit technology
consortium
A consortium (plural: consortia) is an association of two or more individuals, companies, organizations or governments (or any combination of these entities) with the objective of participating in a common activity or pooling their resources for ...
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 (OpenGL ES SL), which is different from
OpenGL SL.
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.
The actual version is 1.0.0.2.
OpenGL ES 1.1
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.
Actual Version is 1.1.12.
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.
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.
The actual is version 3.0.6.
New functionality in the OpenGL ES 3.0 specification includes:
* multiple enhancements to the
rendering pipeline to enable acceleration of advanced visual effects including:
occlusion queries,
transform feedback
This is a glossary of terms relating to computer graphics.
For more general computer hardware terms, see glossary of computer hardware terms.
0–9
A
B
...
,
instanced rendering and support for four or more
rendering targets,
* high quality
ETC2 / EAC texture compression as a standard feature, eliminating the need for a different set of
textures for each platform,
* a new version of the GLSL ES
shading language with full support for integer and
32-bit
In computer architecture, 32-bit computing refers to computer systems with a processor, memory, and other major system components that operate on data in 32-bit units. Compared to smaller bit widths, 32-bit computers can perform large calculation ...
floating point operations;
* 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
Lod ( he, לוד, or fully vocalized ; ar, اللد, al-Lidd or ), also known as Lydda ( grc, Λύδδα), is a city southeast of Tel Aviv and northwest of Jerusalem in the Central District of Israel. It is situated between the lower Shephe ...
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
The OpenGL ES 3.1 specification was publicly released in March 2014.
New functionality in OpenGL ES 3.1 includes:
*
Compute shaders
* Independent vertex and fragment shaders
* Indirect draw commands
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).
OpenGL ES 3.2
The OpenGL ES 3.2 specification was publicly released in August 2015.
New capabilities in OpenGL ES 3.2 include:
* Geometry and
tessellation shaders to efficiently process complex scenes on the GPU.
* Floating point render targets for increased flexibility in higher precision compute operations.
*
ASTC compression to reduce the memory footprint and bandwidth used to process textures.
* Enhanced blending for sophisticated compositing and handling of multiple color attachments.
* Advanced texture targets such as texture buffers, multisample 2D array and cube map arrays.
* Debug and robustness features for easier code development and secure execution.
Actual State is 3.2.6 July 2019.
Some more extensions are developed or in Development in Mesa for next OpenGL ES Version (see Mesamatrix).
Next generation API is Vulkan.
Platform usage
For complete list of companies and their conformant products, vie
here
OpenGL ES 1.0
OpenGL ES 1.0 added an official 3D graphics
API to the
Android
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
and
Symbian
Symbian is a discontinued mobile operating system
A mobile operating system is an operating system for mobile phones, tablets, smartwatches, smartglasses, or other non-laptop personal mobile computing devices. While computers such as typic ...
operating systems, as well as by
QNX It is also supported by the
PlayStation 3 as one of its official graphics APIs (the other one being low level ''libgcm'' library) 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:
*
Android
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
1.6
* Apple
iOS for
iPad,
iPhone, and
iPod Touch
The iPod Touch (stylized as iPod touch) is a discontinued line of iOS-based mobile devices designed and marketed by Apple Inc. with a touchscreen-controlled user interface. As with other iPod models, the iPod Touch can be used as a music pl ...
*
RIM's BlackBerry 5.0 operating system series (only
BlackBerry Storm 2
The BlackBerry Storm 2 is the second full touchscreen smartphone developed by Research In Motion.
Introduction
The BlackBerry Storm 2 is the first and only smartphone in the world to have a full clickable touchscreen powered by its piezoelectric ...
,
BlackBerry Curve 8530
BlackBerry Curve is a brand of professional smartphones that were manufactured by BlackBerry Ltd from 2007 until 2013.
Early series
Curve 8300 Series
The BlackBerry Curve brand was introduced on May 3, 2007 with OS version 4.5 with the Curve 8 ...
and later models have the needed hardware)
*
BlackBerry PlayBook
*
BlackBerry BB10
* Various
Nokia phones such as Nokia N95, N93, N93i, and N82.
* The Palm
webOS, using the Plug-in Development Kit
*
Nintendo 3DS
The is a handheld game console produced by Nintendo. It was announced in March 2010 and unveiled at E3 2010 as the successor to the Nintendo DS. The system features backward compatibility with Nintendo DS video games. As an eighth-generatio ...
OpenGL ES 2.0
Supported by:
* The Android platform since Android 2.0 through NDK and Android 2.2 through Java
*
AmigaOS on
AmigaOne with
Warp3D Nova and compatible
Radeon HD
Radeon () is a brand of computer products, including graphics processing units, random-access memory, RAM disk software, and solid-state drives, produced by Radeon Technologies Group, a division of AMD. The brand was launched in 2000 by ATI Tech ...
graphics card.
* Apple
iOS 5 or later in
iPad,
iPad Mini,
iPhone 3GS or later, and
iPod Touch
The iPod Touch (stylized as iPod touch) is a discontinued line of iOS-based mobile devices designed and marketed by Apple Inc. with a touchscreen-controlled user interface. As with other iPod models, the iPod Touch can be used as a music pl ...
3rd generation or later
*
BlackBerry devices with
BlackBerry OS 7.0 and
Blackberry 10, as well as the
BlackBerry PlayBook
*
Google Native Client
*
Intel HD Graphics 965G / X3000 and higher (Linux)
*
Nvidia (Android), Curie NV40+: Linux, Windows
* Various
Nokia phones (such as
Symbian
Symbian is a discontinued mobile operating system
A mobile operating system is an operating system for mobile phones, tablets, smartwatches, smartglasses, or other non-laptop personal mobile computing devices. While computers such as typic ...
^3 based
Nokia N8,
MeeGo based
Nokia N9, and
Maemo based
Nokia N900)
* Palm
webOS, using the Plug-in Development Kit
* The
Pandora
In Greek mythology, Pandora (Greek: , derived from , ''pān'', i.e. "all" and , ''dōron'', i.e. "gift", thus "the all-endowed", "all-gifted" or "all-giving") was the first human woman created by Hephaestus on the instructions of Zeus. As Hes ...
console
* The
Raspberry Pi
* The
Odroid
* Various
Samsung mobile phones (such as the
Wave)
* Web browsers (
WebGL)
* The
GCW Zero console
* The
PlayStation Vita
The PlayStation Vita (PS Vita, or Vita) is a handheld video game console developed and marketed by Sony Interactive Entertainment. It was first released in Japan on December 17, 2011, and in North America, Europe, and other international territo ...
portable console
* The
PlayStation 4
The PlayStation 4 (PS4) is a home video game console developed by Sony Interactive Entertainment. Announced as the successor to the PlayStation 3 in February 2013, it was launched on November 15, 2013, in North America, November 29, 2013 in ...
console
OpenGL ES 3.0
Supported by:
* Android since version 4.3, on devices with appropriate hardware and drivers, including:
**
Nexus 7 (2013)
**
Nexus 4
The Nexus 4 (codenamed Mako) is an Android (operating system), Android smartphone co-developed by Google and LG Electronics. It is the fourth smartphone in the Google Nexus product family, unveiled on October 29, 2012, and released on November ...
**
Nexus 5
**
Nexus 10
**
HTC Butterfly S
The HTC Butterfly S (stylized as the Butterfly s) is an Android smartphone designed and manufactured by HTC. It is exclusive to Asian countries and currently has not been officially released in North America or Europe. The Butterfly S was unveil ...
**
HTC One/
One Max
**
LG G2
**
LG G Pad 8.3
The LG G Pad 8.3 (also known as LG G Tab 8.3) is an Android-based tablet computer produced and marketed by LG Electronics. It belongs to the LG G series, and was announced on 4 September 2013 and launched in November 2013. Unlike its predecesso ...
** The
Raspberry Pi 4
**
Samsung Galaxy J5
The Samsung Galaxy J5 is an Android smartphone produced by Samsung Electronics. It was unveiled and released in June 2015. It has Qualcomm Snapdragon 410 SoC that is backed by 1.5 GB RAM and that has a 64 bit processor, 32bit mode OS.
I ...
**
Samsung Galaxy J5 (2016)
Samsung Galaxy J5 2016 is an Android-based smartphone produced, developed, released and marketed by Samsung Electronics. It was unveiled and released in April 2016. It has 2 GB LPDDR3 RAM.
The Galaxy J5 has a 13 Megapixel rear camera with ...
**
Samsung Galaxy S4 (Snapdragon version)
**
Samsung Galaxy S5
**
Samsung Galaxy Note 3
**
Samsung Galaxy Note 10.1 (2014 Edition)
The Samsung Galaxy Note 10.1 2014 Edition is a 10.1-inch Android-based tablet computer produced and marketed by Samsung Electronics. It belongs to the new generation of the Samsung Galaxy Note series tablets, which also includes an 8-inch model, ...
**
Sony Xperia M
The Sony Xperia M is an Android 4.1/4.2/4.3 Jelly Bean OS smartphone from Sony which was launched in August 2013.
Features Hardware
The Xperia M has a 4-inch TFT Capacitive touchscreen display, a 1 GHz Dual-core Snapdragon S4 Plus processo ...
**
Sony Xperia Z/ZL
**
Sony Xperia Z1
The Sony Xperia Z1 is an Android smartphone produced by Sony. The Z1, at that point known by the project code name "Honami", was unveiled during a press conference in IFA 2013 on 4 September 2013. The phone was released in China on 15 Septemb ...
**
Sony Xperia Z Ultra
**
Sony Xperia Tablet Z
The Xperia Tablet Z is a touchscreen Android (operating system), Android tablet computer, tablet designed and manufactured by Sony and was first announced in Japan in January 2013. It was then announced globally in Barcelona at the Mobile World C ...
* iOS since version 7, on devices including:
**
iPhone 5S
The iPhone 5S (stylized and marketed as iPhone 5s) is a smartphone that was designed and marketed by Apple Inc. It is the seventh generation of the iPhone, succeeding the iPhone 5, and unveiled in September 2013, alongside the iPhone 5C.
Th ...
**
iPad Air
**
iPad mini with Retina display
The iPad Mini 2 (formerly marketed as the iPad mini with Retina display, officially iPad mini 2 with Retina display) is a tablet computer produced and marketed by Apple Inc. It has a nearly identical design to its predecessor the first-generat ...
* BlackBerry 10 OS since version 10.2, on devices including:
**
BlackBerry Z3
The BlackBerry Z3 is a touchscreen smartphone developed by BlackBerry. Announced in February 2014, it is the first BlackBerry phone produced in partnership with Foxconn. Adopting a similar appearance and dimensions as BlackBerry Z30, Z3 is design ...
**
BlackBerry Z30
**
BlackBerry Passport
Supported by some recent versions of these GPUs:
*
Adreno 300 and 400 series (
Android
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
,
BlackBerry 10, Windows10
Windows RT)
*
Mali T600 series onwards (Android,
Linux,
Windows 7)
*
PowerVR
PowerVR is a division of Imagination Technologies (formerly VideoLogic) that develops hardware and software for 2D and 3D rendering, and for video encoding, decoding, associated image processing and DirectX, OpenGL ES, OpenVG, and OpenCL accelera ...
Series6 (
iOS, Linux)
*
Vivante (Android,
OS X
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
10.8.3, Windows 7)
*
Nvidia (Android), Tesla G80+: Linux, Windows 7+
*
Intel HD Graphics Sandy Bridge and higher (Linux)
* AMD Terascale and actual GCN-architecture (Windows, Linux)
* LLVMpipe and Softpipe: soft drivers in Mesa
* VIRGL: virtual Driver for virtual machines in 2018 with Mesa 18.1 (See Mesamatrix.net)
OpenGL ES 3.1
Supported by Windows, Linux, Android (since version 5.0) on devices with appropriate hardware and drivers, including:
*
Adreno 400 series
*
Adreno 500 series (Mesa 18.1 for Linux and Android)
* AMD Terascale and actual GCN-architecture (Windows, Linux (r600, radeonSI))
* Intel HD Graphics for
Intel Atom Z3700 series (Android)
* Intel HD Graphics for Intel Celeron N and J series (Android)
* Intel HD Graphics for Intel Pentium N and J series (Android)
*
Intel HD Graphics Haswell and higher (Linux Mesa: previous Ivy Bridge nearly without stencil texturing)
* Mali T6xx (midgard) series onwards (Android, Linux)
*
Nvidia GeForce 400 series onwards (Windows, Linux)
* Nvidia Tegra K1 (Android, Linux)
* Nvidia Tegra X1 (Android)
* PowerVR Series 6, 6XE, 6XT, 7XE and 7XT (Linux, Android)
*
Vivante GC2000 series onwards (optional with GC800 and GC1000)
* panfrost: ARM panfrost support (Linux Mesa 22.0)
* v3d: Driver for Broadcom ARM raspberry in Mesa (Linux)
* 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)
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.
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."
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:
*
Adreno 420 and newer (Android, Linux (freedreno))
* AMD GCN-architecture (Windows, Linux (Mesa 18.2 with radeonSI))
*
Intel HD Graphics Skylake and higher (Linux)
* Mali-T760 and newer (Android, Linux)
* Nvidia GeForce 400 series (Fermi) and newer (Windows, Linux)
* 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 devices
OpenGL ES (and OpenGL) is
deprecated in Apple's operating systems, but still works in up to at least iOS 12.
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.
OpenGL compatibility
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. Regal is used for example by
Google's NaCl.
* The
MIT licensed GL4ES emulates OpenGL 2.1/1.5 using GL ES 2.0/1.1. It is based on glshim.
See also
*
Direct3D
Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three-dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware a ...
– Windows API for high-performance 3D graphics, with 3D acceleration hardware support
*
DirectX
Microsoft DirectX is a collection of application programming interfaces (APIs) for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with "Direct", ...
– Windows API for handling tasks related to graphics and video
*
Metal – low level, high-performance 3D accelerated graphics library for Apple devices
*
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
References
Further reading
*
*
*
*
External links
*
Public bug trackingOpenGL ES Conformant companiesPublic forumsList of OpenGL ES compatible devicesOpenGL home pageOpenGL ES 1.1 & 2.0 Emulator from ARM Link unusable. Do not click.
OpenGL ES 3.0 Emulator from ARMLink unusable. Do not click.
{{DEFAULTSORT:Opengl Es
3D graphics APIs
Es