glClear之后的OpenGL无效帧缓冲操作(GL_COLOR_BUFFER_BIT);

时间:2012-06-18 19:18:15

标签: qt opengl error-handling osx-lion framebuffer

每次调用glClear(GL_COLOR_BUFFER_BIT);后,我都会收到OpenGL错误“无效的帧缓冲操作”。

电话似乎工作得很好,似乎没有错。我在glClear(GL_COLOR_BUFFER_BIT);方法中首先调用::paintGL()

咦?我应该忽略这个错误吗?

2 个答案:

答案 0 :(得分:5)

我最好的猜测是你的帧缓冲不完整,并且在一个不完整的帧缓冲区上调用glClear会抛出错误。

使用glCheckFramebufferStatus检查帧缓冲的状态,并确保它返回GL_FRAMEBUFFER_COMPLETE

答案 1 :(得分:3)

我在osx上使用带有CVDisplayLink的NSOpenGLView来触发渲染回调。

在开始渲染之前,请务必等待NSOpenGLView 完全显示,即:

-(void)viewDidAppear {
    [super viewDidAppear];

    CVDisplayLinkStart(_displayLink);
}

在viewDidLoad中执行它太早了。