Doesn't seem to be any obvious gotchas -- it's using hardware.
In particular, I don't think it's the wglMakeCurrent function in WglContext::makeCurrent, which apparently can be slow. I measured it and it takes anywhere from 0 to 4 ms. Which isn't happily fast, but at 60 fps, I get 16 ms per frame (I know I'm doing a hard 16ms delay, but I think it's still a meaningful calculation).
Is it possible that the hardware is that slow? I don't know if I should've said this up front, but the graphics card is integrated. Specs here:
http://support.acer.com/acerpanam/notebook/2009/acer/aspire/Aspire4810TZ/Aspire4810TZsp2.shtmlJust seems stupid to have a hardware implementation of something that's as slow as software though... hm... Hah! It's WAY slower than software. Or whatever I get when I force RenderTextureImplFBO::isAvailable to return false.
I'm going to check out what the default implementation is out of interest, but I'm out of ideas otherwise. Oh, is there a way to profile OpenGL performance so I can be sure of whether or not it's the hardware's fault?