Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Android uses OpenGL ES, what is the difference between it and OpenGL?

share|improve this question
This link has a pretty good description: – Winder Jul 14 '10 at 20:46
up vote 12 down vote accepted

OpenGL ES (Embedded Systems) is a stripped down version of OpenGL. There are a lot of differences between those two and if you want to go way into the details, then you can read this 128 specification paper. But ES is a subset of OpenGL so all ES apps work on non ES systems but not the opposite.

There is no one place where you can easily define what is in ES and what is not. Even one definition is "OpenGL-ES is just like OpenGL, but without a lot of stuff. For example, there's no glBegin or glEnd."

share|improve this answer
ES isn't a straight subset of OpenGL, so your claim that all ES apps work on non ES systems isn't true. – Jari Komppa Jan 14 '11 at 13:22
@JariKomppa - It is as of OpenGL 4.1. – DMan Oct 31 '11 at 23:11
A nice summary of the changes / difference would be nice. – bobobobo Dec 19 '11 at 3:05

Alas, not one of the answers so far is both complete and fully correct. Really, OpenGL-ES does two things OpenGL does not:

1) it strips down and then extends OpenGL APIs to make it suitable for a mobile platform. That is, first they strip out APIs and features you really don't need, and are burdensome for mobile implementations, such as rendering polygons or using display lists. Then it makes a few judicious extensions to make it more useful for the mobile platform. I can't even remember an example of this, though.

2) it provides the interface to the window manager (and therefore native graphics hardware) of the mobile platform. This part of OpenGL-ES, known as EGL, is a lot like GLUT on the desktop. Except that it has none of those convenience methods that are not strictly necessary for that interface. So there is no API for drawing polyhedra or spheres (like in GLUT). But there are, for example, APIs that correspond to GLUT's init(), and to DisplayFunc() and ReshapeFunc() callbacks.

share|improve this answer

There is two OpenGL ES versions available on Android:

  • OpenGL ES 1.x (1.0 or 1.1): a subset of OpenGL 1.5 without immediate commands
    • no glBegin/glEnd
    • no Quad or Polygon support
  • OpenGL ES 2.0: a subset of OpenGL 3.X without fixed pipeline
    • vertex shaders
    • fragment shaders
    • geometry shaders are not available

Warning, OpenGL ES 2.0 is not compatible with OpenGL ES 1.X!

Almost all Android phones have OpenGL 1.X GPU and most have 2.0. OpenGL ES 2.0 is only available with Android 2.x or newer.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.