did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9780321173485

Opengl Programming Guide: The Official Guide to Learning Opengl, Version 1.4

by ; ; ; ;
  • ISBN13:

    9780321173485

  • ISBN10:

    0321173481

  • Edition: 4th
  • Format: Paperback
  • Copyright: 2004-01-01
  • Publisher: Addison-Wesley Professional
  • View Upgraded Edition
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $59.99

Summary

-Fully updated for OpenGL Versions 1.3 and 1.4, with many new example programs and colour slides-Introduces the new shading technologies, including the ARB vertex and fragment program extension-Written under the auspices of the OpenGL Architectural Review Board; the previous edition alone has sold more than 40, 000 copies

Table of Contents

About This Guide xix
What This Guide Contains xix
What's New in This Edition xxii
What You Should Know Before Reading This Guide xxiii
How to Obtain the Sample Code xxiv
Nate Robins' OpenGL Tutors xxv
Errata xxv
Style Conventions xxv
Acknowledgments xxvii
Introduction to OpenGL
1(26)
What Is OpenGL?
2(3)
A Smidgen of OpenGL Code
5(2)
OpenGL Command Syntax
7(2)
OpenGL as a State Machine
9(1)
OpenGL Rendering Pipeline
10(4)
Display Lists
11(1)
Evaluators
11(1)
Per-Vertex Operations
12(1)
Primitive Assembly
12(1)
Pixel Operations
12(1)
Texture Assembly
13(1)
Rasterization
13(1)
Fragment Operations
13(1)
OpenGL-Related Libraries
14(7)
Include Files
15(1)
GLUT, the OpenGL Utility Toolkit
16(5)
Animation
21(6)
The Refresh That Pauses
22(1)
Motion = Redraw + Swap
23(4)
State Management and Drawing Geometric Objects
27(70)
A Drawing Survival Kit
29(8)
Clearing the Window
30(2)
Specifying a Color
32(2)
Forcing Completion of Drawing
34(2)
Coordinate System Survival Kit
36(1)
Describing Points, Lines, and Polygons
37(12)
What Are Points, Lines, and Polygons?
37(5)
Specifying Vertices
42(1)
OpenGL Geometric Drawing Primitives
43(6)
Basic State Management
49(2)
Displaying Points, Lines, and Polygons
51(13)
Point Details
51(1)
Line Details
52(4)
Polygon Details
56(8)
Normal Vectors
64(2)
Vertex Arrays
66(17)
Step 1: Enabling Arrays
68(1)
Step 2: Specifying Data for the Arrays
69(4)
Step 3: Dereferencing and Rendering
73(7)
Interleaved Arrays
80(3)
Attribute Groups
83(3)
Some Hints for Building Polygonal Models of Surfaces
86(11)
An Example: Building an Icosahedron
88(9)
Viewing
97(62)
Overview: The Camera Analogy
100(11)
A Simple Example: Drawing a Cube
103(5)
General-Purpose Transformation Commands
108(3)
Viewing and Modeling Transformations
111(16)
Thinking about Transformations
111(3)
Modeling Transformations
114(6)
Viewing Transformations
120(7)
Projection Transformatons
127(6)
Perspective Projection
128(3)
Orthographic Projection
131(1)
Viewing Volume Clipping
132(1)
Viewport Transformation
133(3)
Defining the Viewport
133(2)
The Transformed Depth Coordinate
135(1)
Troubleshooting Transformations
136(3)
Manipulating the Matrix Stacks
139(5)
The Modelview Matrix Stack
143(1)
The Projection Matrix Stack
143(1)
Additional Clipping Planes
144(3)
Examples of Composing Several Transformations
147(8)
Building a Solar System
148(3)
Building an Articulated Robot Arm
151(4)
Reversing or Mimicking Transformations
155(4)
Color
159(18)
Color Perception
160(2)
Computer Color
162(2)
RGBA versus Color-Index Mode
164(6)
RGBA Display Mode
165(2)
Color-Index Display Mode
167(2)
Choosing between RGBA and Color-Index Mode
169(1)
Changing between Display Modes
170(1)
Specifying a Color and a Shading Model
170(7)
Specifying a Color in RGBA Mode
171(1)
Specifying a Color in Color-Index Mode
172(1)
Specifying a Shading Model
173(4)
Lighting
177(46)
A Hidden-Surface Removal Survival Kit
179(2)
Real-World and OpenGL Lighting
181(3)
Ambient, Diffuse, Specular, and Emissive Light
182(1)
Material Colors
183(1)
RGB Values for Lights and Materials
183(1)
A Simple Example: Rendering a Lit Sphere
184(4)
Creating Light Sources
188(13)
Color
190(1)
Position and Attenuation
191(2)
Spotlights
193(1)
Multiple Lights
194(1)
Controlling a Light's Position and Direction
195(6)
Selecting a Lighting Model
201(4)
Global Ambient Light
202(1)
Local or Infinite Viewpoint
203(1)
Two-Sided Lighting
203(1)
Secondary Specular Color
204(1)
Enabling Lighting
205(1)
Defining Material Properties
205(9)
Diffuse and Ambient Reflection
207(1)
Specular Reflection
208(1)
Emission
208(1)
Changing Material Properties
209(2)
Color Material Mode
211(3)
The Mathematics of Lighting
214(6)
Material Emission
215(1)
Scaled Global Ambient Light
216(1)
Contributions from Light Sources
216(2)
Putting It All Together
218(1)
Secondary Specular Color
219(1)
Lighting in Color-Index Mode
220(3)
The Mathematics of Color-Index Mode Lighting
221(2)
Blending, Antialiasing, Fog, and Polygon Offset
223(48)
Blending
225(16)
The Source and Destination Factors
226(3)
Enabling Blending
229(1)
Combining Pixels Using Blending Equations
229(3)
Sample Uses of Blending
232(2)
A Blending Example
234(3)
Three-Dimensional Blending with the Depth Buffer
237(4)
Antialiasing
241(14)
Antialiasing Points or Lines
243(6)
Antialiasing Geometric Primitives with Multisampling
249(4)
Antialiasing Polygons
253(2)
Fog
255(10)
Using Fog
255(3)
Fog Equations
258(7)
Point Parameters
265(3)
Polygon Offset
268(3)
Display Lists
271(24)
Why Use Display Lists?
272(1)
An Example of Using a Display List
273(3)
Display List Design Philosophy
276(3)
Creating and Executing a Display List
279(7)
Naming and Creating a Display List
280(1)
What's Stored in a Display List?
281(2)
Executing a Display List
283(1)
Hierarchical Display Lists
284(1)
Managing Display List Indices
285(1)
Executing Multiple Display Lists
286(6)
Managing State Variables with Display Lists
292(3)
Encapsulating Mode Changes
293(2)
Drawing Pixels, Bitmaps, Fonts, and Images
295(64)
Bitmaps and Fonts
297(9)
The Current Raster Position
299(1)
Drawing the Bitmap
300(2)
Choosing a Color for the Bitmap
302(1)
Fonts and Display Lists
303(1)
Defining and Using a Complete Font
304(2)
Images
306(9)
Reading, Writing, and Copying Pixel Data
307(8)
Imaging Pipeline
315(16)
Pixel Packing and Unpacking
318(1)
Controlling Pixel-Storage Modes
319(5)
Pixel-Transfer Operations
324(3)
Pixel Mapping
327(1)
Magnifying, Reducing, or Flipping an Image
328(3)
Reading and Drawing Pixel Rectangles
331(4)
The Pixel Rectangle Drawing Process
332(3)
Tips for Improving Pixel Drawing Rates
335(1)
Imaging Subset
336(23)
Color Tables
338(5)
Convolutions
343(8)
Color Matrix
351(2)
Histogram
353(3)
Minmax
356(3)
Texture Mapping
359(92)
An Overview and an Example
364(5)
Steps in Texture Mapping
365(1)
A Sample Program
366(3)
Sepcifying the Texture
369(31)
Texture Proxy
374(2)
Replacing All or Part of a Texture Image
376(3)
One-Dimensional Textures
379(2)
Three-Dimensional Textures
381(5)
Compressed Texture Images
386(3)
Using a Texture's Borders
389(1)
Mipmaps: Multiple Levels of Detail
389(11)
Filtering
400(3)
Texture Objects
403(7)
Naming a Texture Object
404(1)
Creating and Using Texture Objects
404(3)
Cleaning Up Texture Objects
407(1)
A Working Set of Resident Textures
408(2)
Texture Functions
410(4)
Assigning Texture Coordinates
414(8)
Computing Appropriate Texture Coordinates
415(2)
Repeating and Clamping Textures
417(5)
Automatic Texture-Coordinate Generation
422(10)
Creating Contours
423(5)
Sphere Map
428(2)
Cube Map Textures
430(2)
Multitexturing
432(5)
Texture Combiner Functions
437(6)
The Interpolation Combiner Function
442(1)
Applying Secondary Color after Texturing
443(1)
Secondary Color When Lighting Is Disabled
444(1)
Secondary Specular Color When Lighting Is Enabled
444(1)
The Texture Matrix Stack
444(2)
Depth Textures
446(5)
Creating a Shadow Map
447(1)
Generating Texture Coordinates and Rendering
448(3)
The Framebuffer
451(36)
Buffers and Their Uses
454(7)
Color Buffers
455(1)
Clearing Buffers
456(1)
Selecting Color Buffers for Writing and Reading
457(2)
Masking Buffers
459(2)
Testing and Operating on Fragments
461(12)
Scissor Test
462(1)
Alpha Test
462(2)
Stencil Test
464(5)
Depth Test
469(1)
Blending, Dithering, and Logical Operations
470(3)
The Accumulation Buffer
473(14)
Scene Antialiasing
474(6)
Motion Blur
480(1)
Depth of Field
481(4)
Soft Shadows
485(1)
Jittering
486(1)
Tessellators and Quadrics
487(28)
Polygon Tessellation
488(17)
Creating a Tessellation Object
490(1)
Tessellation Callback Routines
490(5)
Tessellation Properties
495(5)
Polygon Definition
500(3)
Deleting a Tessellation Object
503(1)
Tessellation Performance Tips
503(1)
Describing GLU Errors
504(1)
Backward Compatibility
504(1)
Quadrics: Rendering Spheres, Cylinders, and Disks
505(10)
Managing Quadrics Objects
506(1)
Controlling Quadrics Attributes
507(2)
Quadrics Primitives
509(6)
Evaluators and NURBS
515(36)
Prerequisites
517(1)
Evaluators
518(14)
One-Dimensional Evaluators
518(6)
Two-Dimensional Evaluators
524(6)
Using Evaluators for Textures
530(2)
The GLU NURBS Interface
532(19)
A Simple NURBS Example
532(5)
Managing a NURBS Object
537(4)
Creating a NURBS Curve or Surface
541(6)
Trimming a NURBS Surface
547(4)
Selection and Feedback
551(30)
Selection
552(21)
The Basic Steps
553(1)
Creating the Name Stack
554(2)
The Hit Record
556(1)
A Selection Example
557(3)
Picking
560(11)
Hints for Writing a Program That Uses Selection
571(2)
Feedback
573(8)
The Feedback Array
575(1)
Using Markers in Feedback Mode
576(1)
A Feedback Example
576(5)
Now That You Know
581(32)
Error Handling
583(2)
Which Version Am I Using?
585(2)
Utility Library Version
586(1)
Window System Extension Versions
587(1)
Extensions to the Standard
587(3)
Extensions to the Standard for Microsoft Windows (WGL)
589(1)
Cheesy Translucency
590(1)
An Easy Fade Effect
590(2)
Object Selection Using the Back Buffer
592(1)
Cheap Image Transformation
593(1)
Displaying Layers
594(1)
Antialiased Characters
595(3)
Drawing Round Points
598(1)
Interpolating Images
598(1)
Making Decals
598(2)
Drawing Filled, Concave Polygons Using the Stencil Buffer
600(1)
Finding Interference Regions
601(2)
Shadows
603(1)
Hidden-Line Removal
604(2)
Hidden-Line Removal with Polygon Offset
604(1)
Hidden-Line Removal with the Stencil Buffer
605(1)
Texture Mapping Applications
606(1)
Drawing Depth-Buffered Images
607(1)
Dirichlet Domains
608(1)
Life in the Stencil Buffer
609(2)
Alternative Uses for glDrawPixels() and glCopyPixels()
611(2)
A. Order of Operations
613(6)
Overview
614(1)
Geometric Operations
615(1)
Per-Vertex Operations
615(1)
Primitive Assembly
616(1)
Pixel Operations
616(1)
Texture Memory
617(1)
Fragment Operations
617(1)
Odds and Ends
618(1)
B. State Variables
619(40)
The Query Commands
620(1)
OpenGL State Variables
621(38)
Current Values and Associated Data
623(1)
Vertex Array
624(4)
Transformation
628(2)
Coloring
630(1)
Lighting
631(2)
Rasterization
633(2)
Multisampling
635(1)
Texturing
636(6)
Pixel Operations
642(2)
Framebuffer Control
644(1)
Pixels
645(6)
Evaluators
651(1)
Hints
652(1)
Implementation-Dependent Values
653(4)
Implementation-Dependent Pixel Depths
657(1)
Miscellaneous
657(2)
C. OpenGL and Window Systems
659(24)
Accessing New OpenGL Functions
660(1)
GLX: OpenGL Extension for the X Window System
661(7)
Initialization
662(1)
Controlling Rendering
663(2)
GLX Prototypes
665(3)
AGL: OpenGL Extensions for the Apple Macintosh
668(6)
Initialization
669(1)
Rendering and Contexts
669(1)
Managing an OpenGL Rendering Context
669(1)
On-Screen Rendering
670(1)
Off-Screen Rendering
670(1)
Full-Screen Rendering
670(1)
Swapping Buffers
670(1)
Updating the Rendering Buffers
670(1)
Using an Apple Macintosh Font
671(1)
Error Handling
671(1)
AGL Prototypes
671(3)
PGL: OpenGL Extension for IBM OS/2 Warp
674(3)
Initialization
674(1)
Controlling Rendering
674(2)
PGL Prototypes
676(1)
WGL: OpenGL Extension for Microsoft
Windows 95/98/NT/ME/2000/XP
677(6)
Initialization
678(1)
Controlling Rendering
678(2)
WGL Prototypes
680(3)
D. Basics of GLUT: The OpenGL Utility Toolkit
683(8)
Initializing and Creating a Window
684(1)
Handling Window and Input Events
685(2)
Loading the Color Map
687(1)
Initializing and Drawing Three-Dimensional Objects
687(2)
Managing a Background Process
689(1)
Running the Program
689(2)
E. Calculating Normal Vectors
691(6)
Finding Normals for Analytic Surfaces
693(2)
Finding Normals from Polygonal Data
695(2)
F. Homogeneous Coordinates and Transformation Matrices
697(6)
Homogeneous Coordinates
698(1)
Transforming Vertices
698(1)
Transforming Normals
699(1)
Transformation Matrices
699(4)
Translation
700(1)
Scaling
700(1)
Rotation
700(1)
Perspective Projection
701(1)
Orthographic Projection
702(1)
G. Programming Tips
703(6)
OpenGL Correctness Tips
704(2)
OpenGL Performance Tips
706(2)
GLX Tips
708(1)
H. OpenGL Invariance
709(4)
Glossary 713(22)
Index 735

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program