(Addison-Wesley Publishing Company)
Chapter 1 Introduction to OpenGL
Chapter Objectives After reading this chapter, you’ll be able to do the following: Appreciate in general terms what OpenGL does Identify different levels of rendering complexity Understand the basic structure of an OpenGL program Recognize OpenGL command syntax Identify the sequence of operations of the OpenGL rendering pipeline Understand in general terms how to animate graphics in an OpenGL program This chapter introduces OpenGL. It has the following major sections: "What Is OpenGL?" explains what OpenGL is, what it does and doesn’t do, and how it works. "A Smidgen of OpenGL Code" presents a small OpenGL program and briefly discusses it. This section also defines a few basic computer-graphics terms. "OpenGL Command Syntax" explains some of the conventions and notations used by OpenGL commands. "OpenGL as a State Machine" describes the use of state variables in OpenGL and the commands for querying, enabling, and disabling states. "OpenGL Rendering Pipeline" shows a typical sequence of operations for processing geometric and image data. "OpenGL-Related Libraries" describes sets of OpenGL-related routines, including an auxiliary library specifically written for this book to simplify programming examples. "Animation" explains in general terms how to create pictures on the screen that move.
What Is OpenGL?
OpenGL is a software interface to graphics hardware. This interface consists of about 150 distinct commands that you use to specify the objects and operations needed to produce interactive three-dimensional applications. OpenGL is designed as a streamlined, hardware-independent interface to be implemented on many different hardware platforms. To achieve these qualities, no commands for performing windowing tasks or obtaining user input are included in OpenGL; instead, you must work through whatever windowing system controls the particular hardware you’re using. Similarly, OpenGL doesn’t provide high-level commands for describing models of three-dimensional objects. Such commands might allow you to specify relatively complicated shapes such as automobiles, parts of the body, airplanes, or molecules. With OpenGL, you must build up your desired model from a small set of geometric primitives - points, lines, and polygons. A sophisticated library that provides these features could certainly be built on top of OpenGL. The OpenGL Utility Library (GLU) provides many of the modeling features, such as quadric surfaces and NURBS curves and surfaces. GLU is a standard part of every OpenGL implementation. Also, there is a higher-level, object-oriented toolkit, Open Inventor, which is built atop OpenGL, and is available separately for many implementations of OpenGL. (See "OpenGL-Related Libraries" for more information about Open Inventor.) Now that you know what OpenGL doesn’t do, here’s what it does do. Take a look at the color plates they illustrate typical uses of OpenGL. They show the scene on the cover of this book, rendered (which is to say, drawn) by a computer using OpenGL in successively more complicated ways. The following list describes in general terms how these pictures were made. "Plate 1" shows the entire scene displayed as a wireframe model - that is, as if all the objects in the scene were made of wire. Each line of wire corresponds to an edge of a primitive (typically a polygon). For example, the surface of the table is constructed from triangular polygons that are positioned like slices of pie. Note that you can see portions of objects that would be obscured if the objects were solid rather than wireframe. For example, you can see the entire model of the hills outside the window even though most of this model is normally hidden by the wall of the room. The globe appears to be nearly solid because it’s composed of hundreds of colored blocks, and you see the wireframe lines for all the edges of all the blocks, even...