OpenGL ES
From Wikipedia, the free encyclopedia
OpenGL ES (OpenGL for Embedded Systems) is a subset of the OpenGL 3D graphics API designed for embedded devices such as mobile phones, PDAs, and video game consoles. It is defined and promoted by the Khronos Group, a graphics hardware and software industry consortium interested in open APIs for graphics and multimedia.
In creating OpenGL ES 1.0 much functionality has been stripped from the original OpenGL API and a little bit added, two of the more significant differences between OpenGL ES and OpenGL are the removal of the glBegin
–glEnd
calling semantics for primitive rendering (in favor of vertex arrays) and the introduction of fixed-point data types for vertex coordinates and attributes to better support the computational abilities of embedded processors, which often lack a FPU. Many other areas of functionality have been removed in version 1.0 to produce a lightweight interface: for example, quad and polygon primitive rendering, texgen, line and polygon stipple, polygon mode, antialiased polygon rendering (with alpha border fragments, not multisample), ARB_Image
class pixel operation functionality, bitmaps, 3D texture, drawing to the frontbuffer, accumulation buffer, copy pixels, evaluators, selection, feedback, display lists, push and pop state attributes, two-sided lighting, and user defined clip planes.
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. 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 in lieu of floating point data type support, whereas common supports both.
OpenGL ES 1.1 adds to the OpenGL ES 1.0 functionality by introducing additional features such as mandatory support for multitexture, better multitexture support (with combiners and dot product texture operations), automatic mipmap generation, vertex buffer objects, state queries, user clip planes, and greater control over point rendering.
The common profile for OpenGL ES 2.0, publicly released in August 2005, completely eliminates all fixed-function API support in favor of an entirely programmable model, so features like the specification of surface normals in the API for use in a lighting calculation are eliminated in favor of abstract variables, the use of which is defined in a shader written by the graphics programmer.
OpenGL ES also defines an additional safety-critical profile that is intended to be testable and demonstrably robust subset for safety-critical embedded applications such as glass cockpit avionics displays.
OpenGL ES has been chosen as the official graphics API used for PlayStation 3 gaming platform development and as the official 3D graphics API in Symbian OS.
[edit] Further reading
- Astle, Dave and David Durnil: OpenGL ES Game Development, Course Technology PTR, ISBN 1-59200-370-2
- Pulli, Kari and Tomi Aarnio and Kimmo Roimela and Jani Vaarala Designing graphics programming interfaces for mobile devices, IEEE CG&A 2005