OpenGL[tm] (GL for Graphics Library[tm]) is a software interface to graphics hardware. This interface consists of several hundred functions that allow you, a graphics programmer, to specify the objects and operations needed to produce high-quality color images of three-dimensional objects. Many of these functions are actually simple variations of each other, so in reality there are only 120 substantially different functions.
As complements to the core set of OpenGL functions, the OpenGL Utility Library (GLU) and the OpenGL Extension to the X Window System[tm] (GLX) provide useful supporting features. This manual explains what all these functions do; it has the following chapters:
Chapter 1, "Introduction to OpenGL," provides a brief statement of the major underlying concepts embodied in OpenGL. It uses a high-level block diagram to discuss in conceptual terms all the major stages of processing performed by OpenGL.
Chapter 2, "Overview of Commands and Routines," describes in more detail how input data (in the form of vertices specifying a geometric object or pixels defining an image) is processed and how you can control this processing using the functions that comprise OpenGL. Functions belonging to GLU and GLX are also discussed.
Chapter 3, "Summary of Commands and Routines," lists the OpenGL commands in groups according to what sort of tasks they perform. Full prototypes are given so that you can use this section as a quick reference once you understand what the commands accomplish.
Chapter 4, "Defined Constants and Associated Commands," lists the constants defined in OpenGL and the commands that use them.
Chapter 5, "OpenGL Reference Pages," which forms the bulk of this manual, contains descriptions of each set of related OpenGL commands. (Commands with parameters that differ only in data type are described together, for example.) Each reference page fully describes the relevant parameters, the effect of the commands, and what errors might be generated by using the commands.
Chapter 6, "GLU Reference Pages," contains the reference pages for all the GLU routines.
Chapter 7, "GLX Reference Pages," contains the reference pages for the GLX routines.
This manual is designed to be used as the companion reference volume to the OpenGL Programming Guide by Jackie Neider, Tom Davis, and Mason Woo (Reading, MA: Addison-Wesley Publishing Company). The focus of this Reference Manual is how OpenGL works, while the Programming Guide's focus is how to use OpenGL. For a complete understanding of OpenGL, you need both types of information. Another difference between these two books is that most of the content of this Reference Manual is organized alphabetically, based on the assumption that you know what you don't know and therefore need only to look up a description of a particular command; the Programming Guide is organized like a tutorial—it explains the simpler OpenGL concepts first and builds up to the more complex ones. Although the command descriptions in this manual don't necessarily require you to have read the Programming Guide, your understanding of the intended usage of the commands will be much more complete if you have read it. Both books also assume that you know how to program in C.
If you don't have much of a computer graphics background, you should certainly start with the Programming Guide rather than this Reference Manual. Basic graphics concepts are not explained in this manual. You might also want to look at Computer Graphics: Principles and Practice by James D. Foley, Andries van Dam, Steven K. Feiner, and John F. Hughes (Reading, MA: Addison-Wesley Publishing Company). That book is an encyclopedic treatment of the field of computer graphics. Another, gentler introduction to the subject can be found in 3D Computer Graphics: A User's Guide for Artists and Designers by Andrew S. Glassner (New York: Design Press).
This manual owes its existence to many people. Kurt Akeley of Silicon Graphics®, Sally Browning of SABL Productions, and Kevin P. Smith also of Silicon Graphics wrote most of the material, with contributions from Jackie Neider and Mark Segal (both from Silicon Graphics). The OpenGL Graphics System: A Specification (coauthored by Mark and Kurt), The OpenGL Graphics System Utility Library (written by Kevin), and OpenGL Graphics with the X Window System (written by Phil Karlton) served as source documents for the authors. Phil Karlton and Kipp Hickman assisted by helping to define and create OpenGL at Silicon Graphics, with help from Raymond Drewry of Gain Technology, Inc., Fred Fisher of Digital Equipment Corp., and Randi Rost of Kubota Pacific Computer, Inc. The members of the OpenGL Architecture Review Board—Murray Cantor and Linas Vepstas from International Business Machines, Paula Womack and Jeff Lane of Digital Equipment Corporation, Murali Sundaresan of Intel, and Chuck Whitmer of Microsoft—also contributed. Thad Beier together with Seth Katz and the Inventor team at Silicon Graphics created the cover image. Kay Maitz of Silicon Graphics, Arthur Evans of Evans Technical Communications, and Susan Blau provided production assistance; Tanya Kucak copyedited the manual. Finally, this book wouldn't exist unless OpenGL did, for which all the members of the OpenGL team at Silicon Graphics, Inc., need to be thanked for their efforts: Momi Akeley, Allen Akin, Chris Frazier, Bill Glazier, Paul Ho, Simon Hui, Lesley Kalmin, Pierre Tardif, Jim Winget, and especially Wei Yen, in addition to the previously mentioned Kurt, Phil, Mark, Kipp, and Kevin. Many other Silicon Graphics employees, who are too numerous to mention, helped refine the definition and functionality of OpenGL.