OpenGL Performer  Programmer's Guide

Document Number: 007-1680-100

Front Matter

| List of Figures | List of Examples | List of Tables |


Table of Contents

New Features in This Guide

About This Guide
Why Use OpenGL Performer?
What You Should Know Before Reading This Guide
How to Use This Guide
Internet and Hardcopy Reading for the OpenGL Performer Series
Reader Comments

1. OpenGL Performer Programming Interface
General Naming Conventions
Class API
Base Classes

2. Setting Up the Display Environment
Using Pipes
Using Channels
Controlling the Video Output
Using Multiple Channels
Using Channel Groups
Importing OpenGL Multipipe SDK (MPK) Configuration Files

3. Nodes and Node Types
Nodes
Working with Nodes
Node Types
Sample Program

4. Database Traversal
Scene Graph Hierarchy
Application Traversal
Cull Traversal
Draw Traversal
Controlling and Customizing Traversals
Process Callbacks
Intersection Traversal

5. Frame and Load Control
Frame Rate Management
Level-of-Detail Management
Maintaining Frame Rate Using D ynamic Vid eo Res olution
Dynamic Load Management
Successful Multiprocessing with OpenGL Performer
CULL Process Optimizations

6. Creating Visual Effects
Using pfEarthSky
Atmospheric Effects
Patchy Fog and Layered Fog
Real-Time Shadows
Image-Based Rendering

7. Importing Databases
Overview of OpenGL Performer Database Creation and Conversion
libpfdu - Utilities for Creating Efficient OpenGL Performer Run-Time Structures
Developing Custom Importers
Maximizing Database Loading and Paging Performance with PFB and PFI Formats
Supported Database Formats
Description of Supported Formats
Database Operators with Pseudo Loaders
The Maya Database Exporter

8. Geometry
pfGeoSet (Geometry Set)
pfGeoArray (Geometry Array)
Optimizing Geometry for Rendering
Rendering 3D Text

9. Higher-Order Geometric Primitives
Features and Uses of Higher-Order Geometric Primitives
Objects Required by Reps
Geometric Primitives: The Base Class pfRep and the Application repTest
Planar Curves
Spatial Curves
Parametric Surfaces
Meshes
Subdivision Surfaces

10. Creating and Maintaining Surface Topology
Overview of Topology Tasks
Summary of Scene Graph Topology: pfTopo
Collecting Connected Surfaces: pfSolid

11. Rendering Higher-Order Primitives: Tessellators
Features of Tessellators
Base Class pfTessellateAction
Tessellating Parametric Surfaces

12. Graphics State
Immediate Mode

13. Shaders
The pfShaderProgram Class
The pfShaderObject Class
Example Code

14. Using Scalable Graphics Hardware
Using OpenGL Performer with a DPLEX
Using OpenGL Performer with an SGI Scalable Graphics Compositor
Using OpenGL Performer with GPUs

15. ClipTextures
Overview
Cliptexture API
Preprocessing ClipTextures
Cliptexture Configuration
Configuration API
Post-Scene Graph Load Configuration
Manipulating Cliptextures
Using Cliptextures

16. Windows
pfWindows
Creating a pfWindow
Configuring the Framebuffer of a pfWindow
pfWindows and GL Windows
Manipulating a pfWindow
Communicating with the Window System
More pfWindow Examples

17. pfPipeWindows and pfPipeVideoChannels
Using pfPipeWindows
Controlling Video Displays

18. Managing Nongraphic System Tasks
Handling Queues
High-Resolution Clocks
Memory Allocation
Asynchronous I/O (IRIX only)
Error Handling and Notification
File Search Paths

19. Dynamic Data
pfFlux
pfEngine
Animating a Geometry

20. Active Surface Definition
Overview
Using ASD
ASD Solution Flow Chart
A Very Simple ASD
ASD Elements
Data Structures
pfASD Queries
Using ASD for Multiple Channels
Combining pfClipTex ture and pfASD
ASD Evaluation Function Timing
Paging

21. Light Points
Uses of Light Points
Creating a Light Point
Setting the Behavior of Light Points
Callbacks
Reducing CPU Processing Using Textures
Preprocessing Light Points
Calligraphic Light Points
Using pfCalligraphic Without pfChannel
Debugging Calligrap hic Lights on Non-Calligraphic Systems
Calligraphic Light Example

22. Math Routines
Vector Operations
Matrix Operations
Quaternion Operations
Matrix Stack Operations
Creating and Transforming Volumes
Intersecting Volumes
Creating and Working with Line Segments
General Math Routine Example Program

23. Statistics
Interpreting Statistics Displays
Collecting and Accessing Statistics in Your Application

24. Performance Tuning and Debugging
Performance Tuning Overview
How OpenGL Performer Helps Performance
Specific Guidelines for Optimizing Performance
Performance Measurement Tools
Guidelines for Debugging
Memory Corruption and Leaks
Notes on Tuning for RealityEngine Graphics
EventView—A Performance Analyzer

25. Building a Visual Simulation Application Using libpfv
Overview
The Simplest pfvViewer Program
Adding Interaction to a pfvViewer Program
Reading XML Configuration Files
Module Scoping, Multiple Worlds and Multiple Views
Extending a pfvViewer—Writing Custom Modules
Extending a pfvViewer—Module Entry Points
Picking, Selection, and Interaction
More Sample Programs, Configuration Files, and Source Code

26. Programming with C++
Overview
Class Taxonomy
Programming Basics
Porting from C API to C++ API
Subclassing pfObjects
Multiprocessing and Shared Memory
Performance Hints

Glossary

Index