2

我在 GeForce 9800 GTX 上使用 OpenGL 3.3。3.3 的参考页面说 glBindFramebuffer 的无效操作指示不是从 glGenFramebuffers 返回的帧缓冲区 ID。然而,我输出了 glGenFramebuffer 返回的 ID 和稍后发送到 glBindFramebuffer 的 ID,它们是相同的。

但是,当我将 glBindFramebuffer 中的目标参数从 GL_DRAW_FRAMEBUFFER 更改为 GL_FRAMEBUFFER 时,GL 错误消失了。文档说我应该能够使用 GL_DRAW_FRAMEBUFFER。是否存在无法绑定到 GL_DRAW_FRAMEBUFFER 的情况?使用 GL_FRAMEBUFFER 而不是 GL_DRAW_FRAMEBUFFER 有什么危害吗?这是更大问题的征兆吗?

4

1 回答 1

2

如果glBindFramebuffer(GL_FRAMEBUFFER)glBindFramebuffer(GL_DRAW_FRAMEBUFFER)不工作的情况下工作,并且我们不是在谈论这些函数和枚举的 EXT 版本(请注意缺少“EXT”后缀),那么您可能做错了什么。GL_INVALID_OPERATION 是当依赖于不同状态的多个参数组合发生冲突时出现的错误。如果它只是一个缺失的枚举,你应该得到 GL_INVALID_ENUM。

当然,它也可能只是一个驱动程序错误。但是,如果不知道您的代码是什么样子,就无法知道。

于 2011-10-12T18:23:45.120 回答