A workstation user with a single monitor and a monoptic visual will usually sit in a location relative to his or her screen that closely approximates the single symmetric frustum typically supplied to OpenGL as the view model.
In visual simulation applications with curved screens (``domes''), virtual reality ``caves'' and the like, and any situation where the projection unit, projection surface, and viewing parameters don't correspond to a symmetric static frustum, some correction will be required to make the visible image seem accurate and visibly consistent.
Visual inaccuracy is caused by the difference between the observer's view of the surface and the video projector's view of the surface, and is exacerbated by a non-planar screen surface, such as a spherical shell.
If the display surface has no skew component to it, like an ordinary computer monitor or a video projector which is aligned perpendicular to the screen, but the observer's view direction is not perpendicular to the screen, use an asymmetric frustum. This can be accomplished by providing appropriate , , , and parameters to glFrustum() that form a near plane which is not centered on the axis.
If the display surface is askew, as it is if the projector is located above the observer as in a movie theatre, the perspective distortion in the projection must be corrected. This can be accomplished by rendering the scene using an asymmetric frustum as above, storing the rendered scene as a texture, and then drawing a quad textured scene with a projective texture matrix corresponding to the off-center video projector frustum.
Finally, if the display surface itself is non-planar, like the spherical and cylindrical screens used in some flight simulators, a combination of the above technique and image warping is required to produce an accurate image.
You may have to render a larger image than will finally be viewed so that the warped image does not contain any blank areas.
For further information on imagewarping and dewarping, see Section 6.18.