Section 1.6. History of OpenGL


1.6. History of OpenGL

To understand how and why OpenGL was developed, it's important to consider the graphics landscape before OpenGL.

1.6.1. Before 1992

In 1980, the SIGGRAPH Core group reorganized to develop a new ANSI standard graphics API, called PHIGS (Programmer's Hierarchical Interactive Graphics System). By the late 1980s, PHIGS/PHIGS+ was supported on most graphics terminals and workstations. Implementations varied widely from platform to platform, however, impeding independent software vendor (ISV) production of platform-independent applications.

Silicon Graphics, Inc.,[6] began developing its proprietary API, Iris GL, in 1982. Throughout the development of PHIGS in the 1980s, SGI's Iris GL grew in popularity. SGI clearly dominated the interactive 3D computer graphics market for both developers and end users. This was in part because developers felt that Iris GL was more flexible and intuitive than other APIs of the era. By the late 1980s, SGI began licensing Iris GL to companies such as IBM and Nth Portable Graphics. A lack of uniform implementations and uniform performance was an issue for ISVs, however.

[6] Popularly referred to as "SGI" for years, Silicon Graphics, Inc., officially changed its corporate identity to SGI in 1999.

Yet another problem for ISVs was the lack of uniformity in windowing systems. Many workstation manufacturers had their own proprietary windowing system, such as NeWS or OpenWindows. But by 1985, the industry had arrived at a common windowing system: the X Window System (Scheifler 1986). X Windows promised to alleviate some of the portability issues for ISVs by making networks transparent to the application. Any computer supporting the X Windows protocol could display output from any X Windows application.

In 1987, DEC and Sun jointly proposed an extension to X Windows called X3D,[7] more commonly known as PEX,[8] to enable network-transparent interactive 3D graphics applications. The extension was initially intended to support networked PHIGS applications. Later, however, it evolved into the PEXlib API, a thin layer over the X3D protocol. Full PEX implementations were available by the late 1980s (Rost 1989).

[7] Not to be confused with Web3D's VRML successor with the same name.

[8] PEX is an acronym for the PHIGS Extension to X Windows, but the actual extension name is X3D.

By the late 1980s, ISVs with Iris GL-based applications demanded that SGI turn Iris GL into a uniform open standard. Allen Akin, engineering manager of SGI's OpenGL group, recalls the impetus for developing OpenGL: "The main reason was that software vendors said they had to expand their hardware base in order to survive, so they gave SGI the choice of opening up [Iris] GL in some form, or they'd drop support for SGI hardware and go for the higher-volume workstations. PEXlib was one of several alternative APIs that would have competed for those software vendors if OpenGL hadn't been created."[9]

[9] comp.graphics.api.opengl Usenet newsgroup post, March 6, 2001.

SGI started the OpenGL project in 1989. In 1991, it formed the OpenGL ARB, which is composed of representatives from several companies, to oversee its design.

The ARB released the OpenGL version 1.0 specification in June 1992. Commercial implementations from DEC, IBM, and SGI soon followed. OpenGL was designed based on the needs of SGI's large ISV base, so version 1.0 came out with a feature set capable of supporting a wide variety of 3D graphics applications.

1.6.2. OpenGL Compared with Iris GL

SGI used Iris GL as a base for OpenGL development, and there are many similarities between them. Consider this snippet of Iris GL code for drawing a five-sided polygon:

 bgnpolygon();   c3s( red ); v3f( v0 );   c3s( green ); v3f( v1 );   c3s( blue ); v3f( v2 );   c3s( black ); v3f( v3 );   c3s( white ); v3f( v4 ); endpolygon(); 


This code encloses commands for colors and vertices with a bgnpolygon()/endpolygon() pair. The code specifies vertices by passing their address to v3f() (the function name implies a vertex composed of three floats) and specifies the color of each vertex with c3s() (a color composed of three shorts).

Note the similarities between this and its OpenGL version 1.0 equivalent:

 glBegin( GL_POLYGON );   glColor3sv( red ); glVertex3fv( v0 );   glColor3sv( green ); glVertex3fv( v1 );   glColor3sv( blue ); glVertex3fv( v2 );   glColor3sv( black ); glVertex3fv( v3 );   glColor3sv( white ); glVertex3fv( v4 ); glEnd(); 


1.6.3. OpenGL Compared with PEX

SGI's technical white paper, Analysis of PEX 5.1 and OpenGL 1.0 (Akin 1992), examined the differences between OpenGL and PEX. Some feature differences were significant. For example, PEX didn't include support for features such as texture mapping or alpha blending when OpenGL version 1.0 was released.

OpenGL also departed from PEX at a philosophical level:

  • OpenGL specifies an API and also includes a wire protocol for networked operation (GLX). PEX, on the other hand, specifies only a wire protocol, originally intended to support the PHIGS API.

  • OpenGL version 1.0 requires all implementations to support all functionality, whereas the PEX subset paradigm allowed implementations to support only one of three mutually exclusive operational modes. PEX subsets impeded portable application development. Many PEX features are optional, further impeding portability.

  • PEX was designed solely for an X Windows environment. OpenGL is separate from the windowing system, allowing OpenGL implementations in X Windows, Microsoft Windows, Apple Mac OS X, and even nonwindowed environments.

By the late 1990s, most ISVs had ported their PHIGS- and PEXlib-based applications to OpenGL. Today, there is little, if any, PHIGS or PEX development.

1.6.4. Continued Evolution of OpenGL

The OpenGL extension mechanism allows vendors and the ARB to add new features in response to advances in graphics technology (see Chapter 7, "Extensions and Versions"). Texture mapping made extensive use of the extension mechanism, as it was an active area of research and development in the early 1990s. Many OpenGL implementations soon supported extensions for texture objects, copying to textures and subtextures, querying for texture hardware support, and additional texture formats. In January 1996, the ARB released OpenGL version 1.1, formalizing many of these extensions.

Throughout the 1990s, low-cost commercial desktop PCs increased in power and correspondingly consumed more of the traditional workstation market share. Advances in technology also drove the development of single-chip, low-cost graphics hardware, first accelerating only OpenGL fragment operations but later accelerating the full OpenGL pipeline (Geist 1998, McCormack 1998).

By the late 1990s, advances in graphics hardware technology resulted in an increasing number of extensions to OpenGL, making OpenGL application development more complex. To address this issue, the ARB committed to a more aggressive release schedule for new OpenGL versions. OpenGL version 1.2 and the minor release of OpenGL version 1.2.1 both occurred in 1998, with many new texture mapping enhancements. Since the August 2001 release of OpenGL version 1.3, the ARB has released new versions annually, with version 2.0 released in 2004.

In 2002, the release of OpenGL ES (OpenGL for embedded systems) made OpenGL available on handheld devices, appliances, and other platforms with limited memory or computing power. It supports a subset of OpenGL functionality and also supports fixed-point data types.




OpenGL Distilled
OpenGL Distilled
ISBN: 0321336798
EAN: 2147483647
Year: 2007
Pages: 123
Authors: Paul Martz

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net