我在GeForce 9800 GTX上使用OpenGL 3.3。 3.3的参考页说明glBindFramebuffer的无效操作表示没有从glGenFramebuffers返回的帧缓冲区ID。然而,我输出glGenFramebuffers返回的ID以及我稍后发送给glBindFramebuffer的ID,它们是相同的。
然而,当我将glBindFramebuffer中的目标参数从GL_DRAW_FRAMEBUFFER更改为GL_FRAMEBUFFER时,GL错误消失了。文档说我应该可以使用GL_DRAW_FRAMEBUFFER。是否有任何情况下您无法绑定到GL_DRAW_FRAMEBUFFER?使用GL_FRAMEBUFFER而不是GL_DRAW_FRAMEBUFFER有什么危害吗?这是一个更大问题的症状吗?
答案 0 :(得分:2)
当glBindFramebuffer(GL_FRAMEBUFFER)
没有glBindFramebuffer(GL_DRAW_FRAMEBUFFER)
时,{{1}}有效,我们不谈论这些功能和枚举的EXT版本(请注意缺少“EXT”后缀),那么你可能做错了什么。 GL_INVALID_OPERATION是当依赖于不同状态的多个参数组合发生冲突时得到的错误。如果它只是一个缺失的枚举,你应该得到GL_INVALID_ENUM。
当然,它也可能只是一个驱动程序错误。但是如果不知道你的代码是什么样子就没有办法知道。