每次调用glClear(GL_COLOR_BUFFER_BIT);
后,我都会收到OpenGL错误“无效的帧缓冲操作”。
电话似乎工作得很好,似乎没有错。我在glClear(GL_COLOR_BUFFER_BIT);
方法中首先调用::paintGL()
。
咦?我应该忽略这个错误吗?
答案 0 :(得分:5)
我最好的猜测是你的帧缓冲不完整,并且在一个不完整的帧缓冲区上调用glClear
会抛出错误。
使用glCheckFramebufferStatus
检查帧缓冲的状态,并确保它返回GL_FRAMEBUFFER_COMPLETE
。
答案 1 :(得分:3)
我在osx上使用带有CVDisplayLink的NSOpenGLView来触发渲染回调。
在开始渲染之前,请务必等待NSOpenGLView 完全显示,即:
-(void)viewDidAppear {
[super viewDidAppear];
CVDisplayLinkStart(_displayLink);
}
在viewDidLoad中执行它太早了。