Attaching texture to framebuffer for reading causes slow rendering later
Some context: I have a project which creates thumbnails of textures when they are loaded to be used in the GUI. This is achieved by attaching the texture to a framebuffer and using glReadPixels. It works perfectly, but: If a texture from which a thumbnail was generated is then used later on during rendering, the frame rate drops dramatically. I got rid of all the relevant code except for the part that attaches the texture to the framebuffer, and the same slow-down persists.
So the problem boils down to: I call the following code during initialization, after the texture with name "texID" is created and no longer bound, and after an FBO is bound:
Code :
//attach texture
gl.glFramebufferTexture2D(GL2.GL_FRAMEBUFFER,
GL2.GL_COLOR_ATTACHMENT0, GL2.GL_TEXTURE_2D, texID, 0);
//specify drawbuffers and readbuffers
gl.glDrawBuffer(GL2.GL_NONE);
gl.glReadBuffer(GL2.GL_COLOR_ATTACHMENT0);
//check if it worked
int status = gl.glCheckFramebufferStatus(GL2.GL_FRAMEBUFFER);
if(status != GL2.GL_FRAMEBUFFER_COMPLETE){
throw new Error("FBO status is not GL_FRAMEBUFFER_COMPLETE."); }
//set appropriate viewport
gl.glViewport(0, 0, width, height);
//don't do anything (normally glReadPixels stuff would go here)
//detach texture
gl.glFramebufferTexture2D(GL2.GL_FRAMEBUFFER,
GL2.GL_COLOR_ATTACHMENT0, GL2.GL_TEXTURE_2D, 0, 0);
Now I render a bunch of stuff, none of which uses "texID", at about 95 fps. If instead I render the stuff using the texture "texID", the frame rate drops to about 50. If I render the stuff using the texture "texID", but do not do the code snippet above, then it renders at about 95 fps.
Am I missing something obvious?
Extra info: The project is written in Java, using JOGL 2.0, running on Ubuntu 10.04 LTS; graphics card is AMD Radeon HD 6700, Catalyst version 11.12.