Next: 2 OpenGL Up: The OpenGL Graphics Interface Previous: The OpenGL Graphics Interface

1 Introduction

Computer graphics (especially 3D graphics, and interactive 3D graphics in particular) is finding its way into an increasing number of applications, from simple graphing programs for personal computers to sophisticated modeling and visualization software on workstations and supercomputers. As the interest in computer graphics has grown, so has the desire to be able to write an application so that it runs on a variety platforms with a range of graphical capabilites. A graphics standard eases this task by eliminating the need to write a distinct graphics driver for each platform on which the application is to run.

Several standards have succeeded in integrating specific domains of 2D graphics. The PostScript page description language[4] has become widely accepted, making it relatively easy to electronically exchange, and, to a limited degree, manipulate static documents containing both text and 2D graphics. The X window system[7] has become standard for UNIX workstations. A programmer uses X to obtain a window on a graphics display into which either text or 2D graphics may be drawn; X also provides a standard means for obtaining user input from such devices as keyboards and mice. The adoption of X by most workstation manufacturers means that a single program can produce 2D graphics or obtain user input on a variety of workstations by simply recompiling the program. This integration even works across a network: the program may run on one workstation but display on and obtain user input from another, even if the workstations on either end of the network are made by different companies.

For 3D graphics, several standards have been proposed, but none has (yet) gained wide acceptance. One relatively well-known system is PHIGS (Programmer's Hierarchical Interactive Graphics System). Based on GKS[5] (Graphics Kernel System), PHIGS is an ANSI (American National Standards Institute) standard. PHIGS (and its descendant, PHIGS+[9]) provides a means to manipulate and draw 3D objects by encapsulating object descriptions and attributes into a display list that is then referenced when the object is displayed or manipulated. One advantage of the display list is that a complex object need be described only once even if it is to be displayed many times. This is especially important if the object to be displayed must be transmitted across a low-bandwidth channel (such as a network). One disadvantage of a display list is that it can require considerable effort to re-specify the object if it is being continually modified as a result of user interaction. Another difficulty with PHIGS and PHIGS+ (and with GKS) is that they lack support for advanced rendering features such as texture mapping.

PEX[8], which is often said to be an acronym for PHIGS Extension to X, extends X to include the ability to manipulate and draw 3D objects. (PEXlib[6] is the programmer's interface to the PEX protocol.), Among other extensions, PEX adds immediate mode rendering to PHIGS, meaning that objects can be displayed as they are described rather than having to first complete a display list. One difficulty with PEX has been that different suppliers of the PEX interface have chosen to support different features, making program portability problematic. PEX also lacks advanced rendering feaures, and is available only to users of X.



Next: 2 OpenGL Up: The OpenGL Graphics Interface Previous: The OpenGL Graphics Interface


segal@asd.sgi.com
Fri Sep 23 16:08:14 PDT 1994