I am having some problem with the creation of frame buffer with opengles. For my application, I create the main frame buffer like this:
glGenFramebuffers( 1, &viewFramebuffer );
glGenRenderbuffers( 1, &viewRenderbuffer );
glBindFramebuffer( GL_FRAMEBUFFER, viewFramebuffer );
glBindRenderbuffer( GL_RENDERBUFFER, viewRenderbuffer );
[ Context renderbufferStorage : GL_RENDERBUFFER fromDrawable : ( CAEAGLLayer* )self.layer ];
glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, viewRenderbuffer );
glGetRenderbufferParameteriv( GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &backingWidth );
glGetRenderbufferParameteriv( GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &backingHeight );
if ( itUsesDepthBuffer )
{
glGenRenderbuffers( 1, &depthRenderbuffer );
glBindRenderbuffer( GL_RENDERBUFFER, depthRenderbuffer );
glRenderbufferStorage( GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, backingWidth, backingHeight );
glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer );
}
if ( glCheckFramebufferStatus( GL_FRAMEBUFFER ) != GL_FRAMEBUFFER_COMPLETE )
{
NSLog( @"failed to make complete framebuffer object %x", glCheckFramebufferStatus( GL_FRAMEBUFFER ) );
[ self destroyFramebuffer ];
return NO;
}
But the function glGetRenderbufferParameteriv returns 0 either for GL_RENDERBUFFER_WIDTH and GL_RENDERBUFFER_HEIGHT and eventually the glCheckFramebufferStatus returns an error as framebuffer attachment is incomplete.
Do you have any idea why is this happening?
Thank you in advance.
Ok I fixed it, it was failing to render the buffer storage:
[ Context renderbufferStorage : GL_RENDERBUFFER fromDrawable : ( CAEAGLLayer* )self.layer ];
For some reason my "self.layer" was not returning the correct one.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.