I recently modified a program of mine that blits textured 2D shapes to the screen. Previously, I had broken my viewport into tile regions, created a tile sized FBO, and then for each tile rendered it’s content to the FBO and then blited the FBO to the screen (using a GLJPanel). Thinking this was way to complicated, I decided to do away with the tiling and simply draw everything directly to the GLJPanel with no FBO at all. I was very surprised to find my once responsive program had slowed to a crawl. I thought it might have something to do with the GLJPanel’s pBuffers, but using a GLCanvas without FBOs didn’t speed things up much.
Unfortunately, FBOs have a drawback. If I’m using any other application on my system that uses my graphics card (Firefox, Photoshop), my FBO using Java app will often fail with an error message saying that the particular FBO I requested isn’t supported. If I kill my other programs, Java FBOs magically start working again. While this is a work around for debugging, I can’t ship like this. It’s also a pain to have to keep closing my other programs.
Any idea what’s going on? Is there a way I can get my super speed without having to use a redundant FBO? (I’m using JOGL 1.1.1. All the JSR 231s I can find are still in beta).