Next: , Up: GL   [Index]


3.1 About OpenGL

The OpenGL API is a standard interface for drawing three-dimensional graphics. From its origin in Silicon Graphics’s workstations the early 1990s, today it has become ubiquitous, with implementations on mobile phones, televisions, tablets, desktops, and even web browsers.

OpenGL has been able to achieve such widespread adoption not just because it co-evolved with powerful graphics hardware, but also because it was conceived of as an interface specification and not a piece of source code. In fact, these days it is a family of APIs, available in several flavors and versions:

OpenGL 1.x

This series of specifications started with the original releases in 1992, and ended with OpenGL 1.5 in 2003. This era corresponds to a time when graphics cards were less powerful and more special-purpose, with dedicated hardware to handle such details as fog and lighting. As such the OpenGL 1.x API reflects the capabilities of these special units.

OpenGL 2.x

By the early 2000s, graphics hardware had become much more general-purpose and needed a more general-purpose API. The so-called fixed-function rendering pipeline of the earlier years was replaced with a programmable rendering pipeline, in which effects that would have required special hardware were instead performed by custom programs running on the graphics card. OpenGL added support for allocating buffer objects on the graphics card, and for shader programs, which did the actual rendering. In time, this buffer-focused API came to be the preferred form of talking to the GL.

OpenGL ES

OpenGL ES was a “cut-down” version of OpenGL 2.x, designed to be small enough to appeal to embedded device vendors. OpenGL ES 1.x removed some of the legacy functionality from OpenGL, while adding interfaces to use fixed-point math, for devices without floating-point units. OpenGL ES 2.x went farther still, removing the fixed-function pipeline entirely. OpenGL ES 2.x is common on current smart phone platforms.

OpenGL 3.x and above

The OpenGL 3.x series followed the lead of OpenGL ES, first deprecating (in 3.0) and then removing (in 3.1) the fixed-function pipeline. OpenGL 3.0 was released in 2008, but the free Mesa impementation only began supporting it in 2012, so it is currently (23 March 2014) less common.

Guile wraps the OpenGL 2.1 API. It’s a ubiquitous subset of the OpenGL implementations that are actually deployed in the wild; its legacy API looks back to OpenGL 1.x, while the buffer-oriented API is compatible with OpenGL ES.

The full OpenGL 2.1 specification is available at http://www.opengl.org/registry/doc/glspec21.20061201.pdf.


Next: , Up: GL   [Index]