Rendering openGL stereo the right way


I’m developing some tools for visualization clusters and wondering how to render quad buffered stereo the right way. At the moment I’m doing the following per frame:

  1. Setting the draw buffer to GL_BACK_LEFT and drawing the left eye’s view
  2. Setting the draw buffer to GL_BACK_RIGHT and drawing the right eye’s view
  3. Swap the buffers

The result of this should be two image (front buffer) pairs per frame. But if the application is synced to V-Sync at 60 Hz then I end up with 120 rendered frames, 60 for the left eye and 60 for the right eye. This is the double amount then I need which is a waste of resources. For 60Hz V-Sync I actually need 30Hz per eye and then the projector is duplicating the signal to achieve a comfortable frame rate at 120Hz. What the proper way of rendering quadbuffer stereo? I’m using GLFW at the moment for window handling. Should I simply draw left back buffer, swap, draw right back buffer and swap? How does this affect the stereo pair matching using projectors that duplicates the signal?

Thanks for any help clarifying this.

You should do as you initially stated; render-left, render-right, swap.
Syncing at 60Hz will give you 30Hz per eye, which is really good to make you sick within a minute. You really need to output 120Hz (effectively 60Hz per eye). ‘Duplicating’ a 60Hz (30Hz/eye) signal to a 120Hz rate will never be comfortable, since you’re effectively just providing 30Hz per eye.