【问题标题】:glColor, glMatrixMode mysteriously giving "Invalid operation" errorsglColor,glMatrixMode 神秘地给出“无效操作”错误
【发布时间】:2012-04-16 18:36:07
【问题描述】:

最近,我正在开发的游戏引擎开始在不应该出现的地方抛出 OpenGL 错误。渲染几帧后,突然我开始从 glColor 收到错误:

print(gl.GetError()) --> nil
gl.Color(1, 1, 1, 1)
print(gl.GetError()) --> INVALID_OPERATION

如果我不在这里调用 glColor,我稍后会从 glMatrixMode 得到一个无效的操作错误。

根据 GL 手册,glColor 永远不会引发错误,并且 glMatrixMode 仅在它位于 glBegin 和 glEnd 之间时,我已经检查过不是这种情况。这些函数是否还有其他原因会引发错误,我不知道?可能与渲染到纹理/渲染缓冲区扩展有关?我一直在疯狂地调试,找不到任何会导致此类故障的东西。整个程序有点太大太复杂,无法在此处发布。它使用 luagl,它只是 OpenGL API 和 SDL 的一个薄包装器。报告版本为:2.1 Mesa 7.10.2

【问题讨论】:

    标签: opengl luagl


    【解决方案1】:

    如果没有活动的 OpenGL 上下文,glColor 将导致错误。如果您使用多个上下文或 glBindFramebuffer,请检查您是否始终切换有效的上下文。还要记住,使用来自多个线程的 OpenGL 调用需要 special attention

    【讨论】:

    • OpenGL 上下文可以在上下文之间移动就好了。创建线程没有 OpenGL 上下文的限制。您只需要取消绑定并重新绑定即可进行上下文迁移。
    • 我什么都没做,但我有可能以某种方式丢失了我的 GL 上下文吗?
    【解决方案2】:

    https://bugs.freedesktop.org/show_bug.cgi?id=48535 看起来这实际上是一个驱动程序错误。 >.>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 2012-01-24
      • 2015-03-13
      • 2017-04-20
      • 2014-06-07
      • 1970-01-01
      相关资源
      最近更新 更多