OpenGL ES 2.0 FBO creation goes wrong with unknown error

Posted by Nick on Stack Overflow See other posts from Stack Overflow or by Nick
Published on 2010-04-03T00:51:38Z Indexed on 2010/04/03 0:53 UTC
Read the original article Hit count: 687

Filed under:
|
|

Hey guys,

I've been struggling with this for a while now, and this code crashes with, to me, unknown reasons. I'm creating an FBO, binding a texture, and then the very first glDrawArrays() crashes with a "EXC_BAD_ACCESS" on my iPhone Simulator.

Here's the code I use to create the FBO (and bind texture and...)

        glGenFramebuffers(1, &lastFrameBuffer);
        glGenRenderbuffers(1, &lastFrameDepthBuffer);
        glGenTextures(1, &lastFrameTexture);

        glBindTexture(GL_TEXTURE1, lastFrameTexture);
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 768, 1029, 0, GL_RGBA, GL_UNSIGNED_SHORT_5_6_5, NULL);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

        //Bind/alloc depthbuf
        glBindRenderbuffer(GL_RENDERBUFFER, lastFrameDepthBuffer);
        glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, 768, 1029);

        glBindFramebuffer(GL_FRAMEBUFFER, lastFrameBuffer);

        //binding the texture to the FBO :D
        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, lastFrameTexture, 0);

        // attach the renderbuffer to depth attachment point
        glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, lastFrameDepthBuffer);

        [self checkFramebufferStatus];

As you can see this takes part in an object, checkFrameBufferStatus looks like this:

    GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
switch(status)
{
    case GL_FRAMEBUFFER_COMPLETE:
        JNLogString(@"Framebuffer complete.");
        return TRUE;

    case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
        JNLogString(@"[ERROR] Framebuffer incomplete: Attachment is NOT complete.");
        return false;

    case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
        JNLogString(@"[ERROR] Framebuffer incomplete: No image is attached to FBO.");
        return false;

    case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
        JNLogString(@"[ERROR] Framebuffer incomplete: Attached images have different dimensions.");
        return false;

    case GL_FRAMEBUFFER_UNSUPPORTED:
        JNLogString(@"[ERROR] Unsupported by FBO implementation.");
        return false;

    default:
        JNLogString(@"[ERROR] Unknown error.");
        return false;

JNLogString is just an NSLog, and in this case it gives me:

2010-04-03 02:46:54.854 Bubbleeh[6634:207] ES2Renderer.m:372 [ERROR] Unknown error.

When I call it right there.

So, it crashes, and diagnostic tells me there's an unknown error and I'm kinda stuck. I basically copied the code from the OpenGL ES 2.0 Programming Guide...

What am I doing wrong?
Thanks in Advance,

© Stack Overflow or respective owner

Related posts about ipad

Related posts about opengles