Introduction

Table of Contents

1. Getting Started
Necessary Experience
Required Background
Other VR Software Tools
Organization
2. Application Basics
Application Object Overview
No main()—"Don't call me, I'll call you"
Application Objects Derive from Base Classes for Specific Graphics APIs
Writing an Application Means Filling in the Blanks
Benefits of Application Objects
Allow for Run-Time Changes
Low Coupling
Allows Implementation Changes
VR Juggler Startup
No main()—Sort Of
Structure of a main() Function
Kernel Loop
Definition of a Frame
Base Application Object Interface
Initialization
Frame Functions
Draw Manager-Specific Application Classes
OpenGL Application Class
OpenGL Performer Application Class
3. Helper Classes
The vjVec3 and vjVec4 Helper Classes
High-Level Description
Using vjVec3 and vjVec4
Creating Vectors and Setting Their Values
Inversion (Finding the Negative of a Vector)
Normalization
Length Calculation
Multiplication by a Scalar
Division by a Scalar
Converting to an OpenGL Performer Vector
Assignment
Equality/Inequality Comparison
Dot Product
Cross Product (vjVec3 only)
Addition
Subtraction
Full Transformation by a Matrix
Partial Transformation by a Matrix
The Gory Details
The vjMatrix Helper Class
High-Level Description
Using vjMatrix
Creating Matrices and Setting Their Values
Assignment
Equality/Inequality Comparison
Transposing
Finding the Inverse
Addition
Subtraction
Multiplication
Scaling by a Scalar Value
Making an Identity Matrix Quickly
Zeroing a Matrix in a Single Step
Making an XYZ, a ZYX, or a ZXY Euler Rotation Matrix
Constraining Rotation About a Specific Axis or Axes
Making a Matrix Using Direction Cosines
Making a Matrix from a Quaternion
Making a Rotation Transformation Matrix About a Single Axis
Making a Translation Transformation Matrix
Making a Scale Transformation Matrix
Extracting Specific Transformation Information
Converting to an OpenGL Performer Matrix
The Gory Details
The vjDeviceInterface Helper Class
High-Level Description
Using vjDeviceInterface
The Gory Details
The vjProxy Helper Class
High-Level Description
Using vjProxy
The Gory Details