JavaScript EditorFree JavaScript Editor     Ajax Editor 

Main Page
Previous Page
Next Page

1.1. OpenGL History

OpenGL is an industry-standard, cross-platform APPLICATION PROGRAMMING INTERFACE (API). The specification for this API was finalized in 1992, and the first implementations appeared in 1993. It was largely compatible with a proprietary API called Iris GL (Graphics Library) that was designed and supported by Silicon Graphics, Inc. To establish an industry standard, Silicon Graphics collaborated with various other graphics hardware companies to create an open standard, which was dubbed "OpenGL."

The evolution of OpenGL is controlled by the OpenGL Architecture Review Board, or ARB, created by Silicon Graphics in 1992. This group is governed by a set of by-laws, and its primary task is to guide OpenGL by controlling the specification and conformance tests. The original ARB contained representatives from SGI, Intel, Microsoft, Compaq, Digital Equipment Corporation, Evans & Sutherland, and IBM. The ARB currently has as members 3Dlabs, Apple, ATI, Dell, IBM, Intel, NVIDIA, SGI, and Sun Microsystems.

OpenGL shares many of Iris GL's design characteristics. Its intention is to provide access to graphics hardware capabilities at the lowest possible level that still provides hardware independence. It is designed to be the lowestlevel interface for accessing graphics hardware. OpenGL has been implemented in a variety of operating environments, including Macs, PCs, and UNIX-based systems. It has been supported on a variety of hardware architectures, from those that support little in hardware other than the frame buffer itself to those that accelerate virtually everything in hardware.

Since the release of the initial OpenGL specification (version 1.0) in June 1992, six revisions have added new functionality to the API. The current version of the OpenGL specification is 2.0. The first conformant implementations of OpenGL 1.0 began appearing in 1993.

  • Version 1.1 was finished in 1997 and added support for two important capabilitiesvertex arrays and texture objects.

  • The specification for OpenGL 1.2 was released in 1998 and added support for 3D textures and an optional set of imaging functionality.

  • The OpenGL 1.3 specification was completed in 2001 and added support for cube map textures, compressed textures, multitextures, and other things.

  • OpenGL 1.4 was completed in 2002 and added automatic mipmap generation, additional blending functions, internal texture formats for storing depth values for use in shadow computations, support for drawing multiple vertex arrays with a single command, more control over point rasterization, control over stencil wrapping behavior, and various additions to texturing capabilities.

  • The OpenGL 1.5 specification was published in October 2003. It added support for vertex buffer objects, shadow comparison functions, occlusion queries, and nonpower-of-2 textures.

All versions of OpenGL through 1.5 were based on a fixed-function pipelinethe user could control various parameters, but the underlying functionality and order of processing were fixed. OpenGL 2.0, finalized in September 2004, opened up the processing pipeline for user control by providing programmability for both vertex processing and fragment processing as part of the core OpenGL specification. With this version of OpenGL, application developers have been able to implement their own rendering algorithms, using a high-level shading language. The addition of programmability to OpenGL represents a fundamental shift in its design, hence the change to version number 2.0 from 1.5. However, the change to the major version number does not represent any loss of compatibility with previous versions of OpenGL. OpenGL 2.0 is completely backward compatible with OpenGL 1.5applications that run on OpenGL 1.5 can run unmodified on OpenGL 2.0. Other features added in 2.0 include support for multiple render targets (rendering to multiple buffers simultaneously), nonpower-of-2 textures (thus easing the restriction that textures must always be a power of 2 in each dimension), point sprites (screen-aligned textured quadrilaterals that are drawn with the point primitive), and separate stencil functionality for front- and back-facing surfaces.

Previous Page
Next Page

JavaScript EditorAjax Editor     JavaScript Editor