每次调用后glClear(GL_COLOR_BUFFER_BIT);
,我都会收到 OpenGL 错误“帧缓冲区操作无效”。
这个电话似乎工作得很好,似乎没有任何问题。我在方法中调用glClear(GL_COLOR_BUFFER_BIT);
了第一件事::paintGL()
。
嗯?我应该忽略这个错误吗?
每次调用后glClear(GL_COLOR_BUFFER_BIT);
,我都会收到 OpenGL 错误“帧缓冲区操作无效”。
这个电话似乎工作得很好,似乎没有任何问题。我在方法中调用glClear(GL_COLOR_BUFFER_BIT);
了第一件事::paintGL()
。
嗯?我应该忽略这个错误吗?
我最好的猜测是您的帧缓冲区不完整,调用glClear
不完整的帧缓冲区会引发错误。
使用检查帧缓冲区的状态glCheckFramebufferStatus
并确保它返回GL_FRAMEBUFFER_COMPLETE
。
我在 osx 上使用 NSOpenGLView 和 CVDisplayLink 来触发渲染回调时遇到了这个问题。
确保在开始渲染之前等待 NSOpenGLView完全显示,即:
-(void)viewDidAppear {
[super viewDidAppear];
CVDisplayLinkStart(_displayLink);
}
在 viewDidLoad 中这样做还为时过早。