To access the contents, click the chapter and section titles.

Open GL Super Bible
(Publisher: Macmillan Computer Publishing)
Author(s): Waite group Press
ISBN: 1571690735
Publication Date: 08/01/96

Introduction
Foreword
About The Authors

Part I—Introduction To OpenGL
Chapter 1—What Is OpenGL?
About OpenGL
A History of OpenGL
Further Developments in OpenGL
How OpenGL Works
OpenGL under Windows
Graphics Architecture: Software versus Hardware
Limitations of the Generic Implementation
Future Prospects for OpenGL in Windows
Chapter 2—3D Graphics Fundamentals
3D Perception
2D + Perspective = 3D
Hidden Line Removal
Colors and Shading
Lights and Shadows
Coordinate Systems
2D Cartesian Coordinates
Coordinate Clipping
Viewports, Your Window to 3D
Drawing Primitives
3D Cartesian Coordinates
Projections, The Essence of 3D
Orthographic Projections
Perspective Projections
Summary
Chapter 3—Learning OpenGL With The AUX Library
OpenGL: An API, Not a Language
The OpenGL Division of Labor
OpenGL Data Types
Function Naming Conventions
The AUX Library
Platform Independence
AUX = Platform I/O, the Easy Way
Dissecting a Short OpenGL Program
The Includes
The Body
Display Mode: Single-Buffered
Position the Window
Create the OpenGL Window
Clear a Window (Erase with a Color)
Actually Clear
Flush That Queue
Drawing Shapes with OpenGL
The Rendering Function
Drawing a Rectangle
Initialization
Scaling to the Window
Setting the Viewport and Clipping Volume
Defining the Viewport
Defining the Clipping Volume
Keeping a Square Square
Animation with AUX
Double Buffering
Finally, Some 3D!
Summary
Reference Section
Chapter 4—OpenGL for Windows: OpenGL + Win32 = Wiggle
Drawing in Windows Windows
GDI Device Contexts
OpenGL Rendering Contexts
Using the Wiggle Functions
Creating and Selecting a Rendering Context
Painting with OpenGL
Preparing the Window for OpenGL
Window Styles
Pixel Formats
Return of the Bouncing Square
Scaling to the Window
Ticktock, the Idle Clock
Lights, Camera, Action!
Summary
Reference Section
Chapter 5—Errors and Other Messages from OpenGL
When Bad Things Happen to Good Code
Who Am I and What Can I Do?
Extensions to OpenGL
Get a Clue with glHint
Summary
Reference Section

Part II—Using OpenGL
Chapter 6—Drawing in 3D: Lines, Points, and Polygons
Drawing Points in 3D
Setting Up a 3D Canvas
A 3D Point: The Vertex
Draw Something!
Drawing Points
Our First Example
Setting the Point Size
Drawing Lines in 3D
Line Strips and Loops
Approximating Curves with Straight Lines
Setting the Line Width
Line Stippling
Drawing Triangles in 3D
Triangles: Your First Polygon
Winding
Triangle Strips
Triangle Fans
Building Solid Objects
Setting Polygon Colors
Hidden Surface Removal
Culling: Hiding Surfaces for Performance
Polygon Modes
Other Primitives
Four-Sided Polygons: Quads
Quad Strips
General Polygons
Filling Polygons, or Stippling Revisited
Polygon Construction Rules
Subdivision and Edges
Summary
Reference Section
Chapter 7—Manipulating 3D Space: Coordinate Transformations
Is This the Dreaded Math Chapter?
Understanding Transformations
Eye Coordinates
Viewing Transformations
Modeling Transformations
The Modelview Duality
Projection Transformations
Viewport Transformations
Matrix Munching
What Is a Matrix?
The Transformation Pipeline
The Modelview Matrix
Translation
Rotation
Scaling
The Identity Matrix
The Matrix Stacks
A Nuclear Example
Using Projections
Orthographic Projections
Perspective Projections
A Far-Out Example
Advanced Matrix Manipulation
Loading a Matrix
Performing Your Own Transformations
Other Transformations
Summary
Reference Section
Chapter 8—Color and Shading
What Is a Color?
Light as a Wave
Light as a Particle
Your Personal Photon Detector
The Computer as a Photon Generator
PC Color Hardware
PC Display Modes
Screen Resolution
Color Depth
4-Bit Color
8-Bit Color
24-Bit Color
Other Color Depths
Selecting a Color
The Color Cube
Setting the Drawing Color
Shading
Setting the Shading Model
Windows Palettes
Color Matching
Dithering
Advantages of a Palette in 8-Bit Mode
Palette Arbitration
Creating a Palette
Do You Need a Palette?
The Palette’s Structure
The 3-3-2 Palette
Building the Palette
Palette Creation and Disposal
Some Restrictions Apply
Color Index Mode
Why Use Color Index Mode?
Using Color Index Mode
Show the Triangle
Summary
Reference Section
Chapter 9—Lighting and Lamps
Light in the Real World
Ambient Light
Diffuse Light
Specular Light
Put It All Together
Materials in the Real World
Material Properties
Adding Light to Materials
Calculating Ambient Light Effects
Diffuse and Specular Effects
Adding Light to a Scene
Enable the Lighting
Set Up the Lighting Model
Set Material Properties
Using a Light Source
Which Way Is Up?
Surface Normals
Specifying a Normal
Unit Normals
Finding a Normal
Setting Up a Source
Setting the Material Properties
Specifying the Polygons
Lighting Effects
Specular Highlights
Specular Light
Specular Reflectance
Specular Exponent
Normal Averaging
Spotlights
Creating a Spotlight
Drawing a Spotlight
Shadows
What Is a Shadow?
Squish Code
A Shadow Example
Lighting and Color Index Mode
Summary
Reference Section
Chapter 10—3D Modeling and Object Composition
Defining the Task
Choosing a Projection
Choosing the Lighting and Material Properties
Displaying the Results
Constructing a Model, One Piece at a Time
The Head
The Shaft
The Thread
Putting the Model Together
A Makeshift Benchmark
Improving Performance
Creating a Display List
Summary
Reference Section
Chapter 11—Raster Graphics in OpenGL
Drawing Bitmaps
Bitmap Fonts
Building a Simple Font Library
Pixmaps: Bitmaps with Color
Drawing Pixmaps
Remapping Colors
Color Mapping Tables
Scaling a Pixmap
Panning a Pixmap
Reading Pixmaps
Copying Pixmaps
A Bitmap File Viewer
About Windows Bitmap Files
Reading the .BMP File
Writing the .BMP File
Printing the Bitmap
Displaying the Bitmap
Summary
Reference Section
Chapter 12—Texture Mapping
The Basics of Texture Mapping
Defining Texture Images
Defining 1D Textures
Defining 2D Textures
Drawing Textured Polygons
Mipmapped Textures
A Terrain Viewing Program
Defining the Terrain
Drawing Terrain
Drawing the Scene
Automatically Generating Texture Coordinates
Flying Through the Terrain
Summary
Reference Section
Chapter 13—Quadrics: Spheres, Cylinders, and Disks
Creating a Quadric
Changing the Way Quadrics Are Drawn
Drawing Cylinders
Drawing Cones
Texturing and Cylinders
Drawing Disks
Disks and Textures
Drawing Partial Disks
Drawing Spheres
Spheres and Textures
Drawing a Pencil
Summary
Reference Section

Part III—Advanced Topics and Special Effects
Chapter 14—The OpenGL State Machine
Basic OpenGL State Functions
Saving and Restoring States
Drawing States
Depth Buffer States
Stencil Buffer States
Lighting States
Texturing States
Pixel States
Reference Section
Chapter 15—Buffers: Not Just for Animation
What Are Buffers?
Configuring Buffers
The Color Buffer
Double Buffering
Stereo Buffering
Swapping Buffers
The Depth Buffer
Depth Comparisons
Depth Values
Applications of the Depth Buffer
Another Application of the Depth Buffer
Cutting Away Parts of a Scene
The Stencil Buffer
Using the Stencil Buffer
Stencil Buffer Functions
Drawing into the Stencil Buffer
The Accumulation Buffer
Using the Accumulation Buffer for Motion Blur
Using the Accumulation Buffer for Anti-Aliasing
Reference Section
Chapter 16—Visual Effects: Blending and Fog
Blending
Using Blending for Transparency
Using Blending with Anti-Aliasing
Using Blending for a Paint Program
Fog
Drawing Depth-Cued Teapots
Other Types of Fog
Fog Distance
Revisiting the Terrain Viewing Program
Summary
Reference Section
Chapter 17—Curves and Surfaces: What the #%@!&* Are NURBS?
Curves and Surfaces
Parametric Representation
Control Points
Continuity
Evaluators
A 2D Curve
Evaluating a Curve
A 3D Surface
Lighting and Normal Vectors
NURBS
From Bazier to B-Splines
Knots
Creating a NURBS Surface
NURBS Properties
Define the Surface
Trimming
Summary
Reference Section
Chapter 18—Polygon Tessellation
Complex Polygons
Drawing Concave Polygons
Drawing Complex Polygons
Callback Functions
Summary
Reference Section
Chapter 19—Interactive Graphics
Selection
Naming Your Primitives
Working with Selection Mode
The Selection Buffer
Picking
Hierarchical Picking
Feedback
The Feedback Buffer
Feedback Data
PassThrough Markers
An Example
Label the Objects for Feedback
Step 1: Select the Object
Step 2: Get Feedback on the Object
Summary
Reference Section
Chapter 20—OpenGL On The 'Net: VRML
When Worlds Collide
Two-Dimensional Navigation
Enter VRML
WebSpace
Installation
The Walk Viewer
The Examiner Viewer
Open Inventor and VRML
Summary

Part IV—OpenGL with. . .
Chapter 21—MFC-Based OpenGL Programming
Isolate Your OpenGL Code
Starting with AppWizard
Build the Shell
Add the Libraries
Get CView Ready for OpenGL
Pixel Format and Rendering Context
Clean Up the Rendering Context
Handling Window Resizing
Rendering the Scene
Don’t Erase First
CPalette Handling
Summary
Chapter 22—OWL-Based OpenGL Programming
Isolate Your OpenGL Code
Starting with AppExpert
Build the Shell
Add the Headers
Add the Message Handlers
Fleshing Out the Shell
Get TWindowView Ready for OpenGL
Pixel Format and Rendering Context
Clean Up the Rendering Context
Handling Window Resizing
Rendering the Scene
No Flickering Allowed
Keep It Moving
TPalette Handling
Summary
Chapter 23—Visual Basic and 4GL-Based OpenGL Programming
Low-Level Access Required
The Magic of Objects
Plug and Play
Wrap It Up
Use and Operation of WaiteGL.OCX
OpenGL Flags
Installing and Using WaiteGL from VB 4.0
Installing the Control
A Visual Basic Example
Painting the OpenGL Window
Now for Some Action
Installing the OCX in Delphi 2.0
Installing the Control
A Delphi Example
Painting the OpenGL Window
Now for Some Action
Some Notes About the Source
Summary
Chapter 24—The Future of OpenGL and Windows
Conclusion
Appendix A
Appendix B
Appendix C
Appendix D
Index