OpenGL ES is an “embeddable subset” of OpenGL. It slims down the rather large OpenGL API to the bare essentials, so that it can be implemented on devices with simpler, cheaper hardware, and above all, low enough power requirements to run on batteries. For example, it is available as standard on smartphones running both Apple’s IOS and Google’s Android operating system.
OpenGL ES Versus Regular OpenGL
OpenGL ES differs from regular OpenGL in the following main ways:
- No Begin/End grouping and associated calls for individually specifying vertex info: instead, you must use the xxxPointer calls to pass entire buffers of coordinates at a time, and then draw them with DrawArrays (selecting contiguous subarrays) or DrawElements (selecting individual array elements by index).
- Only 2D textures, no 3D or 1D.
- No support for polygons other than triangles.
- ES adds the option to specify coordinates etc as fixed-point values (calls with an x suffix) instead of floating-point (f suffix).
OpenGL ES 1.x Versus 2.0
OpenGL ES 2.0 adds support for shaders corresponding to OpenGL 2.0. However, it is backward-incompatible with OpenGL ES 1.x, because it drops support for the fixed-function pipeline completely: no coordinate transforms, materials or lighting calls are supported. Instead, all this must be implemented via shader programs.