Saving/Restoring Backbuffer

Hello,
I have this problem and I’m trying to solve it using various methods:


- Draw Big/Slow scene
- Save the backbuffer
- Swap
- LOOP at interactive rate :
       Restore the back buffer
       Draw something fast
       Swap

I’ve tryed various methods, but none is successfully working, specially with 2-3 years old hardware. ON my NV GT 220 any method works fast.

  • Using AUX buffers and glCopyPixels : it is the fastest method, but it is almost unsupported
  • Using PBOs : really really slow on previous generation hardware
  • Using glCopyTexImage2D : fast but not fast enought for interactive rates on older hardware.
  • FBOs? Probably will end having the same performance of PBOs?
  • Any extension to do this?

I’d like to target at least opengl 2.1 .

What should I do to correctly save / restore the backbuffer ? I want to save just RGB, and I don’t want to access the data from the CPU, so the saved image should be resident in VRAM.

Thank you for any advice

How about rending the slow scene to an FBO and then use that as a texture to render a full screen quad to the backbuffer whenever you need to restore the backbuffer content.
If you need the fast content to integrate properly with the slow content you will need to save/restore the depth buffer as well.

You might want to look at this paper http://www.computer.org/portal/web/csdl/doi/10.1109/VR.2007.352481 - it may be available elsewhere too.