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