

Living without the fixed-functionality pipeline may seem a little scary, but the advantages are enormous. Depth test, stencil test, and blending are still there, because you can’t perform them in a shader even if you could read the frame buffer, these operations must be executed per sample, whereas fragment shaders work on fragments. We even removed alpha test, since you can perform it in a fragment shader using discard. That means that transformation, lighting, texturing, and fog calculation have been removed from the API. We decided to interpret the “avoid redundancy” rule to mean that anything that can be done in a shader should be removed from the fixed-functionality pipeline. One of the first (and toughest) decisions we made for OpenGL ES 2.0 was to break backward compatibility with ES 1.0 and 1.1. It’s powerful, flexible, and backward compatible but isn’t it, perhaps, a little bit… redundant? You can even mix and match, using the fixed-functionality vertex pipeline with a fragment shader, or vice versa. In OpenGL 2.0 on the desktop, you can do your vertex and fragment processing in shaders or you can use traditional fixed-functionality transformation, lighting, and texturing controlled by state-setting commands. As I said in the OpenGL ES article in OpenGL Pipeline #3, one of the fundamental design principles of OpenGL ES is to avoid providing multiple ways of achieving the same goal.

But almost as interesting as what ES 2.0 has, is what it doesn’t have. That means, of course, that it supports vertex and fragment shaders written in a high-level programming language. Like its predecessors, OpenGL ES 2.0 is based on a version of desktop OpenGL – in this case, OpenGL 2.0. We think you’ll agree that it was worth the wait. We’re very pleased with what we came up with, and excited to have the specification released and silicon on the way. With OpenGL ES 2.0, we moved closer to the cutting edge, so we had less experience to guide us. What took so long? When we created the ES 1.x specifications, we were using mature technology, following paths that the OpenGL ARB had thoroughly explored in older versions of the desktop API. The new specification has been three years in the making – work actually started before the release of our last major release, OpenGL ES 1.1. OpenGL ES 2.0 brings shader-based rendering to cell phones, set-top boxes, and other embedded platforms. It’s here at last! At the Game Developers Conference in March, the OpenGL ES Working Group announced the release of OpenGL ES 2.0, the newest version of OpenGL for mobile devices. Shaders Go Mobile: Announcing OpenGL ES 2.0 Shaders Go Mobile: Announcing OpenGL ES 2.0
