Next | Top | Index

Full Table of Contents


Contents
About This Guide
What This Guide Contains
What You Should Know Before Reading This Guide
Background Reading
OpenGL and Associated Tools and Libraries
X Window System: Xlib, X Toolkit, and OSF/Motif
Other Sources
Conventions Used in This Guide
Typographical Conventions
Function Naming Conventions
1. - OpenGL on Silicon Graphics Systems
Using OpenGL With the X Window System
The GLX Extension to the X Window System
Libraries, Tools, Toolkits, and Widget Sets
RapidApp
Open Inventor
IRIS ViewKit
The IRIS IM Widget Set
The Xlib Library
A Note to IRIS GL Users
Extensions to OpenGL
Debugging and Performance Optimization
Debugging Your Program
Tuning Your OpenGL Application
Maximizing Performance With IRIS Performer
Location of Example Source Code
2. - OpenGL and X: Getting Started
Background and Terminology
The X Window System on Silicon Graphics Systems
The Silicon Graphics X Server
The GLX Extension to X
Compiling With the GLX Extension
X Window System Concepts
Visuals
Drawables
Rendering Contexts
Resources
Colormaps
Libraries, Toolkits, and Tools
Widgets and the Xt Library
The Xt Library
For More Information
Other Toolkits and Tools
Integrating Your OpenGL Program With IRIS IM
Simple Motif Example Program
Looking at the Example Program
Opening the X Display
Selecting a Visual
Creating a Rendering Context
Creating the Window
Binding the Context to the Window
Mapping the Window
Summary
Compiling With OpenGL and Related Libraries
Link Lines for Individual Libraries
Link Lines for Groups of Libraries
3. - OpenGL and X: Examples
Using Widgets
What are OpenGL Drawing-Area Widgets?
Drawing-Area Widget Setup and Creation
Setting Up Fallback Resources
Creating the Widgets
Choosing the Visual for the Drawing-Area Widget
Creating Multiple Widgets With Identical Characteristics
Using Drawing-Area Widget Callbacks
Input Handling With Widgets and Xt
Background Information
Using the Input Callback
Using Actions and Translations
Creating Colormaps
Widget Troubleshooting
Keyboard Input Disappears
Inheritance Issues
Using Xlib
Simple Xlib Example Program
Creating a Colormap and a Window
Installing the Colormap
Xlib Event Handling
Handling Mouse Events
Exposing a Window
Using Fonts and Strings
4. - OpenGL and X: Advanced Topics
Using Animations
Swapping Buffers
Controlling an Animation With Workprocs
General Workproc Information
Workproc Example
Controlling an Animation With Timeouts
Using Overlays
Introduction to Overlays
A Note for IRIS GL Users
How to Create Overlays
Overlay Troubleshooting
Rubber Banding
Using Popup Menus With the GLwMDrawingArea Widget
Using Visuals
Some Background on Visuals
Running OpenGL Applications Using a Single Visual
Using Colormaps
Background Information About Colormaps
Color Variation Across Colormaps
Multiple Colormap Issues
Choosing Which Colormap to Use
Colormap Example
Stereo Rendering
Stereo Rendering Background Information
Quad Buffer Stereo
Divided-Screen Stereo
For More Information
How to Do Stereo Rendering
Performing Stereo Rendering on High-End Systems
Performing Stereo Rendering on Low-End and Mid-Range Systems
Using Pixmaps
Creating and Using Pixmaps
Direct and Indirect Rendering
Performance Considerations for X and OpenGL
Portability
5. - Introduction to OpenGL Extensions
Determining Extension Availability
How to Check for OpenGL Extension Availability
Example Program: Checking for Extension Availability
Checking for GLX Extension Availability
Finding Information About Extensions
6. - Texturing Extensions
The Texture Extension
Why Use the Texture Extension?
Using the Texture Extension
The Texture Extension Proxy Mechanism
Extended Functions
The Texture Object Extension
How Texture Objects Work
Using Texture Objects
Texture Object Names
Editing and Querying Texture Objects
Texture Priorities and Residency
Default Textures
New and Extended Functions
The Subtexture Extension
Why Use the Subtexture Extension?
Using Subtextures
Using Null Images With Subtextures
New Functions
The Copy Texture Extension
Why Use the Copy Texture Extension?
Copying Texture Images
New Functions
The 3D Texture Extension
Why Use the 3D Texture Extension?
Using 3D Textures
3D Texture Example Program
New Functions
The Texture Color Table Extension
Why Use a Texture Color Table?
Using Texture Color Tables
The Sharpen Texture Extension
Using the Sharpen Texture Extension
How to Use the Sharpen Texture Extension
How Sharpen Texture Works
Customizing the LOD Extrapolation Function
Using Sharpen Texture and Texture Object
Sharpen Texture Example Program
New Functions
The Detail Texture Extension
Using the Detail Texture Extension
Creating a Detail Texture and a Low-Resolution Texture
How Detail Texture Is Computed
Customizing the Detail Function
Using Detail Texture and Texture Object
Detail Texture Example Program
New Functions
Texture Clamp Extensions
Texture Clamping Background Information
Why Use the Texture Clamp Extensions?
Using the Texture Clamp Extensions
The Texture LOD Extension
Specifying a Minimum or Maximum Level of Detail
Specifying Image Array Availability
7. - Imaging and Blending Extensions
Introduction to Imaging and Blending Extensions
Where Extensions Are in the Imaging Pipeline
Functions Affected by Imaging Extensions
The ABGR Extension
The Packed Pixels Extension
Why Use the Packed Pixels Extension?
Using Packed Pixels
What the Different Pixel Types Mean
The Color Matrix Extension
The Convolution Extension
Performing Convolution
Separable and General Convolution Filters
New Functions
The Histogram and Minmax Extensions
Using the Histogram Extension
Using the Minmax Part of the Histogram Extension
Using Proxy Histograms
New Functions
The Color Table Extension
Why Use the Color Table Extension?
Specifying a Color Table
Using Framebuffer Image Data for Color Tables
Where Are the Lookup Tables in the Image Pipeline?
New Functions
The Interlace Extension
Using the Interlace Extension
How to Use Interlace and Copy Texture Together
Blending Extensions
The Constant Color Blending Extension
Using Constant Colors for Blending
New Functions
The Minmax Blending Extension
Using a Blend Equation
New Functions
The Logical Operation Blending Extension
The Blend Subtract Extension
8. - Miscellaneous OpenGL Extensions
The Polygon Offset Extension
Polygon Offset Example Program
New Functions
The Vertex Array Extension
Why and When to Use the Vertex Array Extension
How the Vertex Array Extension Works
Specifying Arrays for Different Kinds of Data
Rendering the Arrays
New Functions
The Multisample Extension
Introduction to Multisampling
When to Use Multisampling
Using the Multisample Extension
Using Advanced Multisampling Options
Color Blending and Screen-Door Transparency
Using a Multisample Mask to Fade Levels of Detail
Accumulating Multisampled Images
How Multisampling Affects Different Primitives
Multisampled Points
Multisampled Lines
Multisampled Polygons
Multisample Rasterization of Pixels and Bitmaps
New Functions
9. - Extensions to GLX
The Make Current Read Extension
Possible Match Errors
New Functions
The Visual Info Extension
Using the Visual Info Extension
Using Transparent Pixels
The Visual Rating Extension
Using the Visual Rating Extension
The Video Synchronization Extension
New Functions
The Swap Control Extension
New Functions
The Import Context Extension
Importing a Context
Retrieving Display and Context Information
New Functions
The Framebuffer Configuration Extension
Why Use the Framebuffer Configuration Extension?
Describing a Drawable With a GLXFBConfig Construct
Less-Rigid Similarity Requirements When Matching Context and Drawable
Less-Rigid Match of GLX Visual and X Visual
The GLXFBConfig Construct
Choosing a GLXFBConfig Construct
Retrieving GLXFBConfig Attribute Values
How a GLXFBConfig Is Selected
New Functions
The Pixel Buffer Extension
Rendering to a GLXPbuffer
Directing the Buffer Clobber Event
New Functions
The Video Source Extension
New Functions
10. - Debugging OpenGL Programs
Ogldebug Overview
How ogldebug Operates
Setting Up ogldebug
Using a Configuration File
Basic Debugging With ogldebug
Starting ogldebug
Creating a Trace File to Discover OpenGL Problems
Interacting With ogldebug
Commands for Basic Interaction
Understanding Display Areas
Using Checkboxes
Control-Flow Checkboxes
Trace Checkboxes
Fast Mode Checkboxes
Using Menus to Interact With ogldebug
Using the File Menu to Interact With ogldebug
Using the Commands Menu to Interact With Your Program
Using the Options Menu to Access Information
Using the References Menu for Background Information
Tips for Debugging Graphics Programs
General Debugging Tips
Specific Problems and Troubleshooting
Blank Window
Rotation and Translation Problems
Depth Buffering Problems
Animation Problems
Lighting Problems
X Window System Problems
Pixel and Texture Write Problems
System-Specific Problems
11. - Tuning Graphics Applications: Fundamentals
Why Is Tuning Useful?
What Is Pipeline Tuning?
Three-Stage Model of the Graphics Pipeline
Isolating Bottlenecks in the Pipeline: Overview
Factors Influencing Performance
Tuning Animation
Factors Contributing to Animation Speed
Optimizing Frame Rate Performance
Optimizing Cache and Memory Use
How Memory Is Organized
How to Minimize Memory Paging
Minimizing Lookup
Minimizing Cache Misses
Measuring Cache-Miss and Page-Fault Overhead
Taking Timing Measurements
Benchmarking Basics
Achieving Accurate Timing Measurements
Achieving Accurate Benchmarking Results
12. - Tuning the Pipeline
CPU Tuning: Basics
Immediate Mode Drawing Versus Display Lists
CPU Tuning: Immediate Mode Drawing
Optimizing the Data Organization
Optimizing Database Rendering Code
Examples for Optimizing Data Structures for Drawing
Examples for Optimizing Program Structure
Using Specialized Drawing Subroutines and Macros
Preprocessing Drawing Data: Introduction
Preprocessing Meshes Into Fixed-Length Strips
Preprocessing Vertex Loops
CPU Tuning: Display Lists
CPU Tuning: Advanced Techniques
Mixing Computation With Graphics
Examining Assembly Code
Using Additional Processors for Complex Scene Management
Modeling to the Graphics Pipeline
Tuning the Geometry Subsystem
Using Fast Drawing Modes
Using Peak Performance Primitives for Drawing
Optimizing Lighting Performance
Lighting Operations With Noticeable Performance Costs
Lighting Operations With Significant Performance Costs
Practices to Avoid
Using Expensive Modes Efficiently
Advanced Transform-Limited Tuning Techniques
Tuning the Raster Subsystem
Using Backface/Frontface Removal
Using Expensive Per-Fragment Operations Efficiently
Using Depth-Buffering Efficiently
Other Considerations
Balancing Polygon Size and Pixel Operations
Clearing the Color and Depth Buffers Simultaneously
Tuning the Imaging Pipeline
13. - Tuning Graphics Applications: Examples
Drawing Pixels Fast
Tuning Example
Testing for CPU Limitation
Using the Profiler
Testing for Fill Limitation
Working on a Geometry-Limited Program
Smooth Shading Versus Flat Shading
Reducing the Number of Polygons
Testing Again for Fill Limitation
14. - System-Specific Tuning
Optimizing Performance on Low-End Graphics Systems
Choosing Features for Optimum Performance
Using the Pipeline Effectively
Using Geometry Operations Effectively
Optimizing Line-Drawing
Optimizing Triangles and Polygons
Using Per-Fragment Operations Effectively
Getting the Optimum Fill Rates
Using Per-Fragment Operations Effectively
Low-End Specific Extensions
Optimizing Performance on Mid-Range Systems
General Performance Tips
Optimizing Geometry Operations on Mid-Range Systems
Optimizing Per-Fragment Operations on Mid-Range Systems
Optimizing Performance on Indigo2 IMPACT Systems
General Tips for Performance Improvement
Achieving Peak Geometry Performance
Using Textures
Using Images
Accelerating Color Space Conversion
Using Display Lists Effectively
Display List Compilation on Indigo2 IMPACT Hardware
DMA Display Lists on Indigo2 IMPACT Systems
Offscreen Rendering Capabilities
Optimizing Performance on RealityEngine Systems
Optimizing Geometry Performance
Optimizing Rasterization
Optimizing Use of the Vertex Array Extension
Optimizing Multisampling and Transparency
Optimizing the Imaging Pipeline
Using the Color Matrix and the Color Writemask
A. - OpenGL and IRIS GL
Some IRIS GL Functionality and OpenGL Equivalents
B. - Benchmarks
C. - Benchmarking Libraries: libpdb and libisfast
Libraries for Benchmarking
Using libpdb
Example for pdbRead
Example for pdbMeasureRate()
Example for pdbWriteRate()
Using libisfast
Index

Next | Top | Index