Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenGL invalid framebuffer operation after glClear(GL_COLOR_BUFFER_BIT);

Every time after I call glClear(GL_COLOR_BUFFER_BIT);, I get the OpenGL error "invalid framebuffer operation".

The call seems to work just fine, and nothing seems wrong. I call glClear(GL_COLOR_BUFFER_BIT); first thing in the ::paintGL() method.

Huh? Should I just disregard this error?

like image 289
houbysoft Avatar asked Jun 18 '12 19:06

houbysoft


2 Answers

My best guess is that your framebuffer is not complete and calling glClear on an incomplete framebuffer is throwing the error.

Check the status of the framebuffer using glCheckFramebufferStatus and make sure it returns GL_FRAMEBUFFER_COMPLETE.

like image 82
James Avatar answered Nov 15 '22 03:11

James


I was having this issue on osx using NSOpenGLView with a CVDisplayLink to trigger the render callback.

Be sure to wait for the NSOpenGLView to be fully displayed before starting rendering, i.e. :

-(void)viewDidAppear {
    [super viewDidAppear];

    CVDisplayLinkStart(_displayLink);
}

Doing it in viewDidLoad is too early.

like image 23
ZpaceZombor Avatar answered Nov 15 '22 04:11

ZpaceZombor