I am trying to start using framebuffers in my app. I fallowed Apple tutorial Using a Framebuffer Object as a Texture. And my code looks like this:
Somewhere in header file:
GLuint framebuffer, texture;
GLenum status;
And .m file:
-(void)initFBO {
glGenFramebuffersEXT(1, &framebuffer);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framebuffer);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0,
GL_RGBA, GL_UNSIGNED_BYTE, NULL);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
GL_TEXTURE_2D, texture, 0);
status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
if (status != GL_FRAMEBUFFER_COMPLETE_EXT) {
NSLog(@"failed");
} else {
NSLog(@"success");
}
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
}
-(void)someDrawingFunc {
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb);
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, someTexture1);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f);
glVertex2f(0.0, height);
glTexCoord2f(0.0f, 1.0f);;
glVertex2f(0.0, 0.0);
glTexCoord2f(1.0f, 1.0f);
glVertex2f(width, 0.0);
glTexCoord2f(1.0f, 0.0f);
glVertex2f(width, height);
glEnd();
glBindTexture(GL_TEXTURE_2D, someTexture2);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f);
glVertex2f(0.0, height);
glTexCoord2f(0.0f, 1.0f);;
glVertex2f(0.0, 0.0);
glTexCoord2f(1.0f, 1.0f);
glVertex2f(width, 0.0);
glTexCoord2f(1.0f, 0.0f);
glVertex2f(width, height);
glEnd();
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glBindTexture(GL_TEXTURE_2D, texture);
CGFloat verfb[] = {0, 0,
width, 0,
width, height,
0, height};
CGFloat texfb[] = {0, 0,
1, 0,
1, 1,
0, 1,};
glVertexPointer(2, GL_FLOAT, 0, verfb);
glTexCoordPointer(2, GL_FLOAT, 0, texfb);
glDrawArrays(GL_QUADS, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glFlush();
}
In console I see “success”, but in my app window I see:
[ATTACH=CONFIG]261[/ATTACH]
While with same code just without using framebuffer at all, I see:
[ATTACH=CONFIG]262[/ATTACH]
What am I doing wrong?