OpenGl Programming Guide, 3/e

Mason Woo, Jackie Neider, Tom Davis, Dave Shreiner, OpenGL Architecture Review Board

  • 出版商: Addison-Wesley Professional
  • 出版日期: 1999-08-06
  • 售價: $1,400
  • 貴賓價: 9.8$1,372
  • 語言: 英文
  • 頁數: 784
  • 裝訂: Paperback
  • ISBN: 0201604582
  • ISBN-13: 9780201604580
  • 相關分類: OpenGL






This book provides definitive information on OpenGL, a powerful software interface for graphics hardware that enables graphics programmers to produce high-quality color images of 3D objects. The authors' coverage ranges from basic functions of the latest OpenGL release to the sophisticated capabilities of the OpenGL Utility Library. The third edition has been extensively updated to include the newest features of OpenGL, Version 1.2, and includes many code examples and sample color images. The Architecture Review Board (ARB) is an industry consortium responsible for guiding the evolution of OpenGL and related technologies, and is comprised of industry leaders such as Evans & Sutherland, Hewlett-Packard, IBM, Intel, Intergraph, Microsoft, Sun Microsystems, and Silicon Graphics.

Back to Top

Appropriate Courses

Computer Graphics - Intermediate, Computer Graphics - Intro.

Back to Top

Table Of Contents

About This Guide.
What This Guide Contains.
What's New in This Edition.
What You Should Know Before Reading This Guide.
How to Obtain the Sample Code.
Nate Robins' OpenGL Tutors.
Style Conventions.
1. Introduction to OpenGL.
What Is OpenGL?
A Smidgen of OpenGL Code.
OpenGL Command Syntax.
OpenGL as a State Machine.
OpenGL Rendering Pipeline.
Display Lists.
Per-Vertex Operations.
Primitive Assembly.
Pixel Operations.
Texture Assembly.
Fragment Operations.
OpenGL-Related Libraries.
Include Files.
GLUT, the OpenGL Utility Toolkit.
The Refresh That Pauses.
Motion = Redraw + Swap.

2. State Management and Drawing Geometric Objects.
A Drawing Survival Kit.
Clearing the Window.
Specifying a Color.
Forcing Completion of Drawing.
Coordinate System Survival Kit.
Describing Points, Lines, and Polygons.
What Are Points, Lines, and Polygons?
Specifying Vertices.
OpenGL Geometric Drawing Primitives.
Basic State Management.
Displaying Points, Lines, and Polygons.
Point Details.
Line Details.
Polygon Details.
Normal Vectors.
Vertex Arrays.
Step 1: Enabling Arrays.
Step 2: Specifying Data for the Arrays.
Step 3: Dereferencing and Rendering.
Interleaved Arrays.
Attribute Groups.
Some Hints for Building Polygonal Models of Surfaces.
An Example: Building an Icosahedron.

3. Viewing.
Overview: The Camera Analogy.
A Simple Example: Drawing a Cube.
General-Purpose Transformation Commands.
Viewing and Modeling Transformations.
Thinking about Transformations.
Modeling Transformations.
Viewing Transformations.
Projection Transformations.
Perspective Projection.
Orthographic Projection.
Viewing Volume Clipping.
Viewport Transformation.
Defining the Viewport.
The Transformed Depth Coordinate.
Troubleshooting Transformations.
Manipulating the Matrix Stacks.
The Modelview Matrix Stack.
The Projection Matrix Stack.
Additional Clipping Planes.
Examples of Composing Several Transformations.
Building a Solar System.
Building an Articulated Robot Arm.
Reversing or Mimicking Transformations.

4. Color.
Color Perception.
Computer Color.
RGBA versus Color-Index Mode.
RGBA Display Mode.
Color-Index Display Mode.
Choosing between RGBA and Color-Index Mode.
Changing between Display Modes.
Specifying a Color and a Shading Model.
Specifying a Color in RGBA Mode.
Specifying a Color in Color-Index Mode.
Specifying a Shading Model.

5. Lighting.
A Hidden-Surface Removal Survival Kit.
Real-World and OpenGL Lighting.
Ambient, Diffuse, Specular, and Emissive Light.
Material Colors.
RGB Values for Lights and Materials.
A Simple Example: Rendering a Lit Sphere.
Creating Light Sources.
Position and Attenuation.
Multiple Lights.
Controlling a Light's Position and Direction.
Selecting a Lighting Model.
Global Ambient Light.
Local or Infinite Viewpoint.
Two-Sided Lighting.
Separate Specular Color.
Enabling Lighting.
Defining Material Properties.
Diffuse and Ambient Reflection.
Specular Reflection.
Changing Material Properties.
Color Material Mode.
The Mathematics of Lighting.
Material Emission.
Scaled Global Ambient Light.
Contributions from Light Sources.
Putting It All Together.
Separate Specular Color.
Lighting in Color-Index Mode.
The Mathematics of Color-Index Mode Lighting.

6. Blending, Antialiasing, Fog, and Polygon Offset.
The Source and Destination Factors.
Sample Uses of Blending.
A Blending Example.
Three-Dimensional Blending with the Depth Buffer.
Antialiasing Points or Lines.
Antialiasing Polygons.
Using Fog.
Fog Equations.
Polygon Offset.

7. Display Lists.
An Example of Using a Display List.
Display List Design Philosophy.
Creating and Executing a Display List.
Naming and Creating a Display List.
What's Stored in a Display List?
Executing a Display List.
Hierarchical Display Lists.
Managing Display List Indices.
Executing Multiple Display Lists.
Managing State Variables with Display Lists.
Encapsulating Mode Changes.

8. Drawing Pixels, Bitmaps, Fonts, and Images.
Bitmaps and Fonts.
The Current Raster Position.
Drawing the Bitmap.
Choosing a Color for the Bitmap.
Fonts and Display Lists.
Defining and Using a Complete Font.
Reading, Writing, and Copying Pixel Data.
Imaging Pipeline.
Pixel Packing and Unpacking.
Controlling Pixel-Storage Modes.
Pixel-Transfer Operations.
Pixel Mapping.
Magnifying, Reducing, or Flipping an Image.
Reading and Drawing Pixel Rectangles.
The Pixel Rectangle Drawing Process.
Tips for Improving Pixel Drawing Rates.
Imaging Subset.
Color Tables.
Color Matrix.
Combining Pixels Using Blending Equations.
Constant Blending Factors.

9. Texture Mapping.
An Overview and an Example.
Steps in Texture Mapping.
A Sample Program.
Specifying the Texture.
Texture Proxy.
Replacing All or Part of a Texture Image.
One-Dimensional Textures.
Three-Dimensional Textures.
Using a Texture's Borders.
Multiple Levels of Detail.
Texture Objects.
Naming A Texture Object.
Creating and Using Texture Objects.
Cleaning Up Texture Objects.
A Working Set of Resident Textures.
Texture Functions.
Post-Texture Application of Specular Color.
Assigning Texture Coordinates.
Computing Appropriate Texture Coordinates.
Repeating and Clamping Textures.
Automatic Texture-Coordinate Generation.
Creating Contours.
Environment Mapping.
Advanced Features.
The Texture Matrix Stack.

10. The Framebuffer.
Buffers and Their Uses.
Color Buffers.
Clearing Buffers.
Selecting Color Buffers for Writing and Reading.
Masking Buffers.
Testing and Operating on Fragments.
Scissor Test.
Alpha Test.
Stencil Test.
Depth Test.
Blending, Dithering, and Logical Operations.
The Accumulation Buffer.
Scene Antialiasing.
Motion Blur.
Depth of Field.
Soft Shadows.

11. Tessellators and Quadrics.
Polygon Tessellation.
Creating a Tessellation Object.
Tessellation Callback Routines.
Tessellation Properties.
Polygon Definition.
Deleting a Tessellation Object.
Tessellation Performance Tips.
Describing GLU Errors.
Backward Compatibility.
Quadrics: Rendering Spheres, Cylinders, and Disks.
Managing Quadrics Objects.
Controlling Quadrics Attributes.
Quadrics Primitives.

12. Evaluators and NURBS.
One-Dimensional Evaluators.
Two-Dimensional Evaluators.
Using Evaluators for Textures.
The GLU NURBS Interface.
A Simple NURBS Example.
Managing a NURBS Object.
Creating a NURBS Curve or Surface.
Trimming a NURBS Surface.

13. Selection and Feedback.
The Basic Steps.
Creating the Name Stack.
The Hit Record.
A Selection Example.
Hints for Writing a Program That Uses Selection.
The Feedback Array.
Using Markers in Feedback Mode.
A Feedback Example.

14. Now That You Know.
Error Handling.
Which Version Am I Using?
Utility Library Version.
Window System Extension Versions.
Extensions to the Standard.
Extensions to the Standard for Microsoft Windows (WGL).
Cheesy Translucency.
An Easy Fade Effect.
Object Selection Using the Back Buffer.
Cheap Image Transformation.
Displaying Layers.
Antialiased Characters.
Drawing Round Points.
Interpolating Images.
Making Decals.
Drawing Filled, Concave Polygons Using the Stencil Buffer.
Finding Interference Regions.
Hidden-Line Removal.
Hidden-Line Removal with Polygon Offset.
Hidden-Line Removal with the Stencil Buffer.
Texture Mapping Applications.
Drawing Depth-Buffered Images.
Dirichlet Domains.
Life in the Stencil Buffer.
Alternative Uses for glDrawPixels() and glCopyPixels().

A. Order of Operations.
Geometric Operations.
Per-Vertex Operations.
Primitive Assembly.
Pixel Operations.
Texture Memory.
Fragment Operations.
Odds and Ends.

B. State Variables.
The Query Commands.
OpenGL State Variables.
Current Values and Associated Data.
Vertex Array.
Pixel Operations.
Framebuffer Control.
Implementation-Dependent Values.
Implementation-Dependent Pixel Depths.

C. OpenGL and Window Systems.
GLX: OpenGL Extension for the X Window System.
Controlling Rendering.
GLX Prototypes.
AGL: OpenGL Extensions for the Apple Macintosh.
Rendering and Contexts.
Managing an OpenGL Rendering Context.
On-Screen Rendering.
Off-Screen Rendering.
Full-Screen Rendering.
Swapping Buffers.
Updating the Rendering Buffers.
Using an Apple Macintosh Font.
Error Handling.
AGL Prototypes.
PGL: OpenGL Extension for IBM OS/2 Warp.
Controlling Rendering.
PGL Prototypes.
WGL: OpenGL Extension for Microsoft Windows 95/98/NT.
Controlling Rendering.
WGL Prototypes.

D. Basics of GLUT: The OpenGL Utility Toolkit.
Initializing and Creating a Window.
Handling Window and Input Events.
Loading the Color Map.
Initializing and Drawing Three-Dimensional Objects.
Managing a Background Process.
Running the Program.

E. Calculating Normal Vectors.
Finding Normals for Analytic Surfaces.
Finding Normals from Polygonal Data.

F. Homogeneous Coordinates and Transformation Matrices.
Homogeneous Coordinates.
Transforming Vertices.
Transforming Normals.
Transformation Matrices.
Perspective Projection.
Orthographic Projection.

G. Programming Tips.
OpenGL Correctness Tips.
OpenGL Performance Tips.
GLX Tips.

H. OpenGL Invariance.

Back to Top