glColor,glMatrixMode神秘地给出了“无效操作”错误

时间:2012-04-10 11:50:15

标签: opengl luagl

最近我的游戏引擎正在开始将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

2 个答案:

答案 0 :(得分:1)

如果没有活动的OpenGL上下文,

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

答案 1 :(得分:1)

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