Divided screen stereo (a.k.a. top/bottom stereo) is most
appropriate for low-end systems that do not have enough memory for
quad-buffer stereo. Divided screen stereo displays either the top or the
bottom of the screen. The command /usr/gfx/setmon STR_TOP or STR_BOT is
used to set the monitor. Two buffers are used in normal operation for
animation. That is, while one scene is being displayed on the front
buffer, the new, altered scene is drawn to a second, back buffer. The two
buffers are then swapped to avoid the time it takes to redraw a new display
on the screen. In divided screen stereo, the two buffers are used instead
as left and right buffers. The buffers are drawn and displayed in this
way:
SetStereoBuffer(STEREO_BUFFER_LEFT);
< draw left image >
SetStereoBuffer(STEREO_BUFFER_RIGHT);
< draw right image >
SwapBuffers(...);
The pixels are elongated, creating pixels that are twice as high as they
are wide, instead of the usual square, so the images must be adjusted
accordingly. Because stereo mode requires the computer to render an image
twice (once for each eye), divided screen stereo allows the computer to
only render half of the screen twice. In this way, performance time is
minimized and a lesser amount of memory is used. However, if you have the
means, (i.e. an Infinite Reality or Reality Engine) quad-buffer stereo is a
better method.
Quad-buffer stereo (a.k.a. stereo in a window) uses four buffers to
render a scene. Using ircombine, the monitor is set to 1024x768_96s.vfo.
This designates two channels, each with a refresh rate of half of 96 Hz, or
48 Hz. Instead of using only half of the screen like divided screen
stereo, quad-buffer stereo simply doubles the number of buffers available.
The four buffers are front-right, back-right, front-left, and back-left.
This way, the full screen can be seen and refreshed as smoothly as
possible. We used quad-buffer stereo to render Hank and Performer in stereo.
The buffers are drawn and displayed like this:
DrawBuffer(BACK_LEFT);
< draw left image >
DrawBuffer(BACK_RIGHT);
< draw right image >
SwapBuffers(...);
Return to the top
Return to the main page.