The target audience for my app is Tiger (10.4) or later.
There are some features that require FBOs for full function, and some others that would be a whole lot faster and easier to write.
I’m also interested in using color buffers other than the front or back color buffer. I need an extra color buffer in order to pre-render the current OpenGL view so the user can drag to create a 2D selection rectangle over a complex shaded 3D surface (like drawing on a sheet of glass in front of a 3D view) and be able to refresh the screen fast enough to keep up in real time. I could do that by pre-rendering my 3D view to an auxiliary color buffer or to an FBO. Then as the user drags a selection rectangle, I could quickly copy the newly exposed portion of the view from the color buffer/FBO to the front buffer.
How widespread is support for FBOs and other color buffers on Macs that can run Tiger? From what I’ve read there are widely different versions of OpenGL running on different Mac configurations.
FBOs exist since 10.4.3 on both PowerPC and Intel, but PowerPC Macs didn’t receive OpenGL updates between 10.4.4 and 10.4.11 inclusive, the way Intel Macs did, so it’s likely your minimum OS requirement for PowerPC will be 10.5, due to bugs or missing features. For Intel, there’s a fairly smooth curve of functionality up to Leopard Graphics Update 1.0.
Multiple draw buffers appeared first in 10.4.8 or so IIRC. I don’t see from what you said why you need that, though.
So FBOs are available in 10.4.3 regardless of graphics hardware? Is that only true with the software renderer? I’d prefer not to have to force the software renderer on older machines. I need the performance boost of the hardware. My app creates some huge shaded polygon meshes.
Using FBOs to buffer the contents of my viewport was one approach I was considering.
Using an auxiliary color buffer was another approach I was thinking about. I’d duplicate the contents of the front buffer to the aux buffer, then blit the aux buffer back to the main color buffer (front or back, depending) and draw my selection rectangle on top of that.