When you need to make a zoom window command on a OpenGL surface, you need to draw in 2D screen coordinates a rectangle while dragging.
Now we are drawing this rectangle re-drawing the whole scene and of course when the scene become complex the fps rate drops too much for a pleasant user experience.
Try to use WGL_ARB_buffer_region (if exist). If not then:
Draw scene to texture, refresh as you need. Use FBO or PBuffer, and if everything fails, draw to backbuffer and use glCopyTexImage2D call to grab backbuffer content to texture.
Draw screen aligned quad with above texture + selection rect
I don’t think the FBO approach is robust enough when the Full Screen AntiAliasing comes into play. It involves even the GL_EXT_framebuffer_multisample extension that some GPU don’t support at 100%.
Are you sure that it is not possible to do this only using the front and back buffers?
According to realtech GLView database, WGL_ARB_buffer_region is present on FireGL cards. It’s a WGL extension… not GL extension… To get list of WGL extensions use wglGetExtensionsStringARB.
Yes.
The downside of using copytex alone without FBO is that it does not works well when moving overlapped windows (framebuffer for parts covered by other windows is undefined), but during an interactive command it is not a problem.