World Library  
Flag as Inappropriate
Email this Article


Article Id: WHEBN0001268625
Reproduction Date:

Title: OpenGL ES  
Author: World Heritage Encyclopedia
Language: English
Subject: Raspberry Pi, Mali (GPU), Adreno, OpenGL, Vivante Corporation
Collection: 3D Graphics Apis, Opengl
Publisher: World Heritage Encyclopedia


OpenGL ES logo
OpenGL ES logo
Original author(s) ARB
Developer(s) Khronos Group
Initial release 28 July 2003 (2003-07-28)
Stable release 3.2[1] / 10 August 2015 (2015-08-10)
Operating system Cross-platform
Platform Cross-platform
Type API
License Free of charge, royalty or licensing
Website /

OpenGL for Embedded Systems (OpenGL ES or GLES) is a subset[2] of the OpenGL computer graphics rendering application programming interface (API) for rendering 2D and 3D computer graphics such as those used by video games, typically hardware-accelerated using a graphics processing unit (GPU). It is designed for embedded systems like smartphones, computer tablets, video game consoles and PDAs. Open GL ES is the "most widely deployed 3D graphics API in history".[3]

The API is non-profit technology consortium Khronos Group. Vulkan, a next-generation API from Kronos, is made for simpler high performance drivers for mobile and desktop devices.[4]


  • Versions 1
    • OpenGL ES 1.0 1.1
    • OpenGL ES 1.1 1.2
    • OpenGL ES 2.0 1.3
    • OpenGL ES 3.0 1.4
    • OpenGL ES 3.1 1.5
    • OpenGL ES 3.2 1.6
  • Platform usage 2
    • OpenGL ES 1.0 2.1
    • OpenGL ES 1.1 2.2
    • OpenGL ES 2.0 2.3
    • OpenGL ES 3.0 2.4
    • OpenGL ES 3.1 2.5
      • Android Extension Pack 2.5.1
    • OpenGL ES 3.2 2.6
  • OpenGL compatibility 3
  • References 4
  • See also 5
  • Further reading 6
  • External links 7


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.[5]

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 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 operation are not supported, nor are bitmaps or 3D textures,
  • several of the more technical drawing modes are eliminated, including frontbuffer and accumulation buffer. Bitmap operations, specifically copying pixels (individually) is not allowed, nor are evaluators, nor (user) selection operations,
  • display lists and feedback are removed, as are push and pop operations for state attributes,
  • some material parameters were removed, including back-face parameters and user defined clip planes.

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.

OpenGL ES 2.0

OpenGL ES 2.0 was publicly released in March 2007.[6] It is based roughly 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 transition from OpenGL 3.0 to 3.1.[7] 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.[8] 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.[9]

OpenGL ES 3.0

The OpenGL ES 3.0 specification[10] was publicly released in August 2012.[11] 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.

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, 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[12] with full support for integer and 32-bit 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 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[13] was publicly released in March 2014. New functionality in OpenGL ES 3.1 includes:[14]

OpenGL ES 3.1 is backward compatible with OpenGL ES 2.0 and 3.0, thus enabling applications to incrementally incorporate new features.

OpenGL ES 3.2

The OpenGL ES 3.2 specification[15] 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.

Platform usage

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[16] and Symbian[17] operating systems, as well as by QNX[18] It is also supported by the PlayStation 3 as one of its official graphics APIs[19] (the other one being low level libgcm library) with Nvidia's Cg in lieu of GLSL.[20] 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:

OpenGL ES 2.0

Supported by:

OpenGL ES 3.0

Supported by:

Supported by some recent versions of these GPUs:[28][29]

OpenGL ES 3.1

Supported by Windows, Linux, Android (since version 5.0) on devices with appropriate hardware and drivers,[30] including:

  • Adreno 400 series[31][32]
  • 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)
  • Mali T6xx (midgard) series onwards[33] (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)[34]

Android Extension Pack

Android Extension Pack is a superset of OpenGL ES 3.1 introduced by Google in 2014. The AEP was officially added to Android Lollipop to provide extra features like tessellation over what was officially in the GLES 3.1 revision. The OpenGL ES 3.2 update is largely made up of the AEP additions, which are already present in desktop OpenGL.[35]

OpenGL ES 3.2

OpenGL ES 3.2 works on the same hardware as OpenGL 3.1. It incorporates Android Extension Pack (AEP) into it: "OpenGL ES 3.2 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."[36][3]

Supported by:

  • Nvidia GeForce 400 series (Fermi) and newer (Windows, Linux)[37]

Open GL SC 2.0 (planned 2016) and Vulkan/SPIR will converge in a "New Generation API for safety certifiable graphics AND compute".[3]

OpenGL compatibility

For full compatibility with OpenGL on ES-only devices, Nvidia offers a BSD licensed library called Regal, originally started by Cass Everitt.[38] Regal is used for example by Google's NaCl.[39]


  1. ^ Khronos Expands Scope of 3D Open Standard Ecosystem
  2. ^
  3. ^ a b c
  4. ^ Not dead yet: AMD’s Mantle powers new Vulkan API, VR efforts, By Joel Hruska, 4 March 2015, ExtremeTech, Ziff Davis
  5. ^
  6. ^
  7. ^ Edward Angel, Dave Shreiner, Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL, 6th Edition, p. xxi-xxii, ISBN 978-0-13-254523-5
  8. ^
  9. ^ The OpenGL(R)Graphics System: A Specification (Version 4.1 (Core Profile) - July 25, 2010)
  10. ^
  11. ^
  12. ^
  13. ^
  14. ^
  15. ^
  16. ^ What is Android?, Google
  17. ^ Symbian OS v9.5 product sheet, Symbian
  18. ^
  19. ^ OpenGL ES demo in PPT format
  20. ^ SONY/Khronos OpenGL ES/PSGL Presentation in PPT format
  21. ^
  22. ^
  23. ^ a b
  24. ^
  25. ^
  26. ^
  27. ^ iOS 8 for Developers - Apple Developer
  28. ^
  29. ^
  30. ^
  31. ^
  32. ^
  33. ^
  34. ^
  35. ^
  36. ^
  37. ^
  38. ^
  39. ^ In-depth: Bringing Regal OpenGL to Native Client, By John McCutchan, 7 September 2012, Gamasutra

See also

  • OpenGL – original cross-language, multi-platform API for rendering 2D and 3D vector graphics
  • OpenSL ES – API for audio on embedded systems, developed by the Khronos Group
  • Vulkan – low-level, cross-platform 2D and 3D graphics API, the "next generation OpenGL initiative"

Further reading

External links

  • Official website
  • Public bug tracking
  • OpenGL ES Conformant companies
  • Public forums
  • List of OpenGL ES compatible devices
  • OpenGL home page
  • ANGLE: Almost Native Graphics Layer Engine, OpenGL ES 2.0 implementation on top of Direct3D 9/11
  • OpenGL ES 1.1 & 2.0 Emulator from ARM
  • OpenGL ES 3.0 Emulator from ARM
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.

Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.