1

最近,我正在开发的游戏引擎开始在不应该出现的地方抛出 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

4

2 回答 2

1

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

于 2012-04-16T10:36:07.467 回答
1

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

于 2012-04-10T12:17:27.433 回答