FBOs not working in JOGL2

I’m porting an application from JOGL 1.1.1 to JSR 231. I’m getting a strange error when I attempt to create an FBO:


        GL2 gl = drawable.getGL().getGL2();
        IntBuffer ibuf = BufferUtil.allocateInt(1);
        gl.glGenBuffers(1, ibuf);
        bufferId = ibuf.get(0);

        gl.glBindFramebuffer(GL2.GL_FRAMEBUFFER, framebuffer);

This causes a GL_INVALID_OPERATON. According to the GL spec, glBindFramebuffer shouldn’t even throw this exception. I am using a DebugGL2 to look for errors the same way I used a DebugGL in JOGL 1.1.1.

Exception in thread "AWT-EventQueue-0" javax.media.opengl.GLException: Thread[AWT-EventQueue-0,6,main] glGetError() returned the following error codes after a call to glBindFramebuffer(<int> 0x8D40, <int> 0x1): GL_INVALID_OPERATION ( 1282 0x502), 
        at javax.media.opengl.DebugGL2.checkGLGetError(DebugGL2.java:32455)
        at javax.media.opengl.DebugGL2.glBindFramebuffer(DebugGL2.java:15587)
        at com.kitfox.coyote.renderer.jogl.GLWrapperJOGL.glBindFramebuffer(GLWrapperJOGL.java:100)
        at com.kitfox.coyote.renderer.CyFramebuffer.init(CyFramebuffer.java:118)

Any idea what I’m doing wrong?

From the OpenGL docs:

I can’t see where you’re assigning a value to ‘framebuffer’, but it should have come from a call to glGenFramebuffers() with code very similar to how you’re getting the VBO id, ‘bufferId’. And just in case, glGenBuffers() is for vertex buffer objects and does not create an FBO id (but I’m pretty sure you already know that).

Ah. Silly mistake on my part. :slight_smile: Yes, I was generating Buffers instead of Framebuffers.