9

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

这个电话似乎工作得很好,似乎没有任何问题。我在方法中调用glClear(GL_COLOR_BUFFER_BIT);了第一件事::paintGL()

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

4

2 回答 2

5

我最好的猜测是您的帧缓冲区不完整,调用glClear不完整的帧缓冲区会引发错误。

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

于 2012-07-27T15:20:32.927 回答
3

我在 osx 上使用 NSOpenGLView 和 CVDisplayLink 来触发渲染回调时遇到了这个问题。

确保在开始渲染之前等待 NSOpenGLView完全显示,即:

-(void)viewDidAppear {
    [super viewDidAppear];

    CVDisplayLinkStart(_displayLink);
}

在 viewDidLoad 中这样做还为时过早。

于 2017-03-15T13:56:43.937 回答