| |
| |
Preface | |
| |
| |
| |
Introduction | |
| |
| |
The OpenGL API | |
| |
| |
What's in OpenGL | |
| |
| |
OpenGL Versions of Extensions | |
| |
| |
Languages | |
| |
| |
Programming Conventions | |
| |
| |
Compiling | |
| |
| |
Sources | |
| |
| |
Who Should Use this Primer | |
| |
| |
Outline | |
| |
| |
| |
Two-Dimensional Programming in OpenGL | |
| |
| |
A Simple Program | |
| |
| |
GLUT | |
| |
| |
Event Loops and Callback Functions | |
| |
| |
Drawing a Rectangle | |
| |
| |
Changing the GLUT Defaults | |
| |
| |
Color in OpenGL | |
| |
| |
Coordinate System Differences Between Gand OpenGL | |
| |
| |
Two-Dimensional Viewing | |
| |
| |
The Viewport | |
| |
| |
Coordinate Systems and Transformations | |
| |
| |
Simple C, Second Version | |
| |
| |
Primitives and Attributes | |
| |
| |
Polygon Types | |
| |
| |
Color Interpolation | |
| |
| |
Text | |
| |
| |
Inquires and Errors | |
| |
| |
Saving the State | |
| |
| |
| |
Interaction and Animation | |
| |
| |
The Reshape Callback | |
| |
| |
The Idle Callback | |
| |
| |
A Rotating Square | |
| |
| |
Double Buffering | |
| |
| |
Using the Keyboard | |
| |
| |
Using the Mouse Callback | |
| |
| |
Mouse Motion | |
| |
| |
Menus | |
| |
| |
The NULL Callback | |
| |
| |
Sub and Multiple Windows | |
| |
| |
Example: single_double.c | |
| |
| |
Display Lists | |
| |
| |
Picking and Selection Mode | |
| |
| |
| |
Basic Three-Dimensional Programming | |
| |
| |
Cameras and Objects | |
| |
| |
Orthographic Projects in OpenGL | |
| |
| |
Viewing a Cube | |
| |
| |
Locating the Camera | |
| |
| |
Building Objects | |
| |
| |
Hidden Surface Removal | |
| |
| |
GLU and GLUT Objects | |
| |
| |
Perspective Projects | |
| |
| |
| |
Transformations | |
| |
| |
Line-Preserving Transformations | |
| |
| |
Homogeneous Coordinates | |
| |
| |
The Model-View and Projection Transformations | |
| |
| |
Translation | |
| |
| |
Rotation | |
| |
| |
Scaling | |
| |
| |
A Rotating Cube | |
| |
| |
Setting Matrices Directly | |
| |
| |
Transformations and Coordinate Systems | |
| |
| |
Modeling with Transformations | |
| |
| |
| |
Lights and Materials | |
| |
| |
Light/Material Interactions | |
| |
| |
The Phong Model | |
| |
| |
OpenGL Lighting | |
| |
| |
Specifying a Light Source | |
| |
| |
Specifying a Material | |
| |
| |
Shading the Rotating Cube | |
| |
| |
Controlling the Lighting Calculation | |
| |
| |
Smooth Shading | |
| |
| |
Working with Normals | |
| |
| |
Transparency | |
| |
| |
| |
Images | |
| |
| |
Pixels and Bitmaps | |
| |
| |
Bitmaps | |
| |
| |
Drawing Modes | |
| |
| |
Reading and Writing Pixels | |
| |
| |
Selecting Buffers | |
| |
| |
Pixel Store Modes | |
| |
| |
Displaying a PPM Image | |
| |
| |
Using Luminance | |
| |
| |
Pixel Mapping | |
| |
| |
Pixel Zoom | |
| |
| |
Image Processing in OpenGL | |
| |
| |
| |
Texture Mapping | |
| |
| |
What is a Texture Map? Constructing a Texture Map | |
| |
| |
Texture Coordinates | |
| |
| |
Texture Parameters | |
| |
| |
A Rotating Cube with Texture | |
| |
| |
Applying Textures to Surfaces | |
| |
| |
Borders and Sizing | |
| |
| |
Mipmaps | |
| |
| |
Automatic Texture Coordinate Generation | |
| |
| |
Texture Maps for Image Manipulation | |
| |
| |
| |
Curves and Surfaces | |
| |
| |
Parametric Curves | |
| |
| |
Parametric Surfaces | |
| |
| |
BFzier Curves and Surfaces | |
| |
| |
One-Dimensional OpenGL Evaluators | |
| |
| |
Two-Dimensional Evaluators | |
| |
| |
An Interactive Example | |
| |
| |
Other Types of Cures | |
| |
| |
The Utah Teapot | |
| |
| |
Normals and Shading | |
| |
| |
Interpreting Surfaces | |
| |
| |
| |
Putting It Together | |
| |
| |
A Demo Program | |
| |
| |
Other OpenGL Features | |
| |
| |
Buffers | |
| |
| |
Writing Portable, Efficient, Robust Code | |
| |
| |
| |
Looking to the Future | |
| |
| |
Versions and Extensions | |
| |
| |
OPenGL Extensions | |
| |
| |
Going Beyond Real-Time Graphics | |
| |
| |
Programmable Pipelines | |
| |
| |
Shading Languages | |
| |
| |
Index | |