List of Figures

| Table of Contents | List of Figures | List of Examples | List of Tables |

Figure 2-1. White Rectangle on a Black Background
Figure 2-2. Order of Operations
Figure 2-3. Double-Buffered Rotating Square
Figure 3-1. Coordinate System Defined by w = 50, h = 50
Figure 3-2. Two Connected Series of Line Segments
Figure 3-3. Valid and Invalid Polygons
Figure 3-4. Nonplanar Polygon Transformed to Nonsimple Polygon
Figure 3-5. Approximating Curves
Figure 3-6. Drawing a Polygon or a Set of Points
Figure 3-7. Geometric Primitive Types
Figure 3-8. Stippled Lines
Figure 3-9. Wide Stippled Lines
Figure 3-10. Constructing a Polygon Stipple Pattern
Figure 3-11. Stippled Polygons
Figure 3-12. Subdividing a Nonconvex Polygon
Figure 3-13. Outlined Polygon Drawn Using Edge Flags
Figure 3-14. Six Sides; Eight Shared Vertices
Figure 3-15. Cube with Numbered Vertices
Figure 3-16. Modifying an Undesirable T-intersection
Figure 3-17. Subdividing to Improve a Polygonal Approximation to a Surface
Figure 4-1. The Camera Analogy
Figure 4-2. Stages of Vertex Transformation
Figure 4-3. Transformed Cube
Figure 4-4. Rotating First or Translating First
Figure 4-5. Translating an Object
Figure 4-6. Rotating an Object
Figure 4-7. Scaling and Reflecting an Object
Figure 4-8. Modeling Transformation Example
Figure 4-9. Object and Viewpoint at the Origin
Figure 4-10. Separating the Viewpoint and the Object
Figure 4-11. Default Camera Position
Figure 4-12. Using gluLookAt()
Figure 4-13. Perspective Viewing Volume Specified by glFrustum()
Figure 4-14. Perspective Viewing Volume Specified by gluPerspective()
Figure 4-15. Orthographic Viewing Volume
Figure 4-16. Viewport Rectangle
Figure 4-17. Mapping the Viewing Volume to the Viewport
Figure 4-18. Perspective Projection and Transformed Depth Coordinates
Figure 4-19. Using Trigonometry to Calculate the Field of View
Figure 4-20. Modelview and Projection Matrix Stacks
Figure 4-21. Pushing and Popping the Matrix Stack
Figure 4-22. Additional Clipping Planes and the Viewing Volume
Figure 4-23. Clipped Wireframe Sphere
Figure 4-24. Planet and Sun
Figure 4-25. Robot Arm
Figure 4-26. Robot Arm with Fingers
Figure 5-1. The Color Cube in Black and White
Figure 5-2. RGB Values from the Bitplanes
Figure 5-3. Dithering Black and White to Create Gray
Figure 5-4. A Color Map
Figure 5-5. Using a Color Map to Paint a Picture
Figure 6-1. A Lit and an Unlit Sphere
Figure 6-2. GL_SPOT_CUTOFF Parameter
Figure 7-1. Creating a Nonrectangular Raster Image
Figure 7-2. Aliased and Antialiased Lines
Figure 7-3. Determining Coverage Values
Figure 7-4. Fog-Density Equations
Figure 7-5. Polygons and Their Depth Slopes
Figure 8-1. Stroked Font That Defines the Characters A, E, P, R, S
Figure 9-1. Bitmapped F and Its Data
Figure 9-2. Bitmap and Its Associated Parameters
Figure 9-3. Simplistic Diagram of Pixel Data Flow
Figure 9-4. Imaging Pipeline
Figure 9-5. glCopyPixels() Pixel Path
Figure 9-6. glBitmap() Pixel Path
Figure 9-7. glTexImage*(), glTexSubImage*(), and glGetTexImage() Pixel Paths
Figure 9-8. glCopyTexImage*() and glCopyTexSubImage*() Pixel Paths
Figure 9-9. *SKIP_ROWS, *SKIP_PIXELS, and *ROW_LENGTH Parameters
Figure 9-10. Drawing Pixels with glDrawPixels()
Figure 9-11. Reading Pixels with glReadPixels()
Figure 10-1. Texture-Mapping Process
Figure 10-2. Texture-Mapped Squares
Figure 10-3. Texture with Subimage Added
Figure 10-4. Mipmaps
Figure 10-5. Texture Magnification and Minification
Figure 10-6. Texture-Map Distortion
Figure 10-7. Repeating a Texture
Figure 10-8. Clamping a Texture
Figure 10-9. Repeating and Clamping a Texture
Figure 11-1. Region Occupied by a Pixel
Figure 11-2. Motion-Blurred Object
Figure 11-3. Jittered Viewing Volume for Depth-of-Field Effects
Figure 12-1. Contours That Require Tessellation
Figure 12-2. Winding Numbers for Sample Contours
Figure 12-3. How Winding Rules Define Interiors
Figure 13-1. Bézier Curve
Figure 13-2. Bézier Surface
Figure 13-3. Lit, Shaded Bézier Surface Drawn with a Mesh
Figure 13-4. NURBS Surface
Figure 13-5. Parametric Trimming Curves
Figure 13-6. Trimmed NURBS Surface
Figure 15-1. Antialiased Characters
Figure 15-2. Concave Polygon
Figure 15-3. Dirichlet Domains
Figure 15-4. Six Generations from the Game of Life
Figure A-1. Order of Operations
Figure E-1. Rendering with Polygonal Normals vs. True Normals
Figure E-2. Averaging Normal Vectors