OpenGL Optimizer   Programmer's Guide:  An Open API for  Large-Model Visualization

Document Number: 007-2852-002

Front Matter

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

Table of Contents

About This Guide
Audience for This Guide
How to Use This Guide
What This Guide Contains
Recommended Background Reading
Conventions Used in This Guide

I. Getting Started

1. OpenGL Optimizer Overview
The Optimizer Challenge and Solution
The OpenGL Optimizer Toolset

2. Basic I/O: Getting Started with OpenGL Optimizer
Calling opInit()
Saving and Loading Scene-Graph Files
Viewing Class: opViewer
Controlling Rendering: opKeyCallback and opDrawImpl

II. High-Level Strategic Tools for Fast Rendering

3. Sending Efficient Graphics Data to the Hardware
Display Lists
Vertex Arrays
Shortening Representations of Surface Normal Data
Avoiding OpenGL Mode Switching
Creating OpenGL Connected Primitives

4. Rendering Appropriate Levels of Detail
Overview of Simplification Tools
opSimplify: Base Class for Adding Level-of-Detail Nodes
Creating LODs: opSRASimplify
Rossignac Simplification Algorithm: opLatticeSimplify
Merging Graphs With Differing Levels of Detail: opMergeScenes

5. Culling Unneeded Objects From the Scene Graph
View-Frustum Culling
Occlusion Culling
View-Frustum and Occlusion Cull Draw Traversal: opDrawAction
Rendering With View-Frustum and Occlusion Culling: opOccDrawImpl
Tuning Tips for Occlusion Culling
Detail Culling
Back-Face Culling

6. Organizing the Scene Graph Spatially
Effect of Spatialization on Cull Traversals
Granularity Trade-offs
When to Spatialize
Spatialization Algorithm
Spatialization Tool: opSpatialize
Classes for Component Procedures of Spatialization

III. Specific Tools for Fast Rendering

7. Interactive Highlighting and Manipulating
Overview of Highlighting and Picking
Interacting With a Rendered Object: opPickDrawImpl
Scene Graph Modification: opPick
Node to Override Appearances: opHighlight

8. Efficient High-Quality Lighting Effects: Reflection Mapping
Simple Mapping: Remote View of a Remote Environment
Accurate Mapping: Local View of a Local Environment
Reflection-Mapping Class: opReflMap

IV. Managing and Rendering Higher-Order Geometric Primitives

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

10. Creating and Maintaining Surface Topology
Overview of Topology Tasks
Summary of Scene Graph Topology: opTopo
Consistent Vertices at Boundaries: opBoundary
Collecting Connected Surfaces: opSolid

11. Rendering Higher-Order Primitives: Tessellators
Features of Tessellators
Base Class opTessellateAction
Tessellating Curves in Space
Tessellating a Cuboid: opTessCuboidAction
Tessellating Parametric Surfaces
Tessellating a Regular Mesh

V. Traversers, Low-Level Geometry Processing, and Multiprocessing

12. Traversing a Large Scene Graph
Traversals and Callbacks: General Features
Controlling a Traversal With the Callback Return Value opTravDisp
Specifying Deletion of Traversal Object Storage: opActionDisp
Depth-First Traversals: opDFTravAction
Breadth-First Traversals: opBFTravAction
Sample Traversal Function From the opoptimize Sample Application
Traversing a Scene Graph and Applying a csDispatch: opDispatchAction

13. Manipulating Triangles and Rebuilding Renderable Objects
Overview of Low-Level Geometry Tools
Decomposing csGeoSets Into Constituent Triangles: opGeoConverter
Specifying Coloring of New csGeoSets: opColorGenerator
Building New csGeoSets

14. Managing Multiple Processors
MP Control Tasks and Related Classes
Overview of the Thread Manager
Thread Manager: opThreadMgr
Defining Tasks for a Thread Manager
Coordinating Threads That Change a Scene Graph: opTransactionMgr
Low-Level Multiprocess Tools

VI. Utilities and Troubleshooting

15. Utilities
Error Handling and Notification
Performance Indicators
opx: A Template Class for Dynamic Arrays of Contiguous Elements
Printing a Scene Graph
Gathering Triangle Statistics
Displaying Node Information
Observing OpenGL Modes
Command-Line Parser: opArgParser

16. Troubleshooting
Compiler Warning Messages
Run-Time Warning Messages
Tuning the Scene Graph Database

VII. Appendices

A. Installing OpenGL Optimizer
Installing the OpenGL Optimizer and Supporting Software on UNIX Systems
Installing OpenGL Optimizer on NT Systems

B. OpenGL Optimizer Sample Applications
Command-Line Options and User Input
opviewer Sample Application
Other Sample Applications

C. opviewer Sample Application
Verifying Installation
Compiling and Running opviewer
opviewer Code

D. Scene Graph Tuning With the opoptimize Application
Values Returned by Scene Graph Tools
Compiling and Running opoptimize
opoptimize Code

E. Optimizer Class Hierarchy
opGUI Class Hierarchy
opXmGUI class hierarchy
Optimizer Class Hierarchy