ABSTRACT

Perspective projection is a well-understood aspect of 3D graphics. This chapter deals with a very simple example which uses the generalized projection to render crossed-eye stereo pairs suitable for viewing on a normal 2D display. Most OpenGL applications simply select a field of view, specify near and far clipping plane distances, and call gluPerspective or glFrustum. Stereo rendering is an excellent application of the projection function, because many stereo application implementors do it wrong. Virtual reality involves a number of complicating aspects: first-person motion-tracked perspective, stereoscopic viewing, and multi-screen, non-planar display surfaces. To display a single coherent virtual environment, all 60 screens must define their projections in a common frame of reference. By composing the screen-space orientation and eye position translation matrices with the perspective projection on the CPU, the vertex shader need not concern itself with the nature of the projection.