glColor,glMatrixMode神秘地显示“无效操作”错误。

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

原文链接 https://stackoverflow.com/questions/10088222

点赞
stackoverflow用户43673
stackoverflow用户43673

glColor 在没有活动的 OpenGL 上下文的情况下会导致错误。如果您正在使用多个上下文或 glBindFramebuffer,请确保始终切换到有效的上下文。还请记住,使用多个线程的 OpenGL 调用需要特殊关注

2012-04-10 12:17:27
stackoverflow用户1160471
stackoverflow用户1160471

看起来这实际上是一个驱动程序错误。 >.>

2012-04-16 10:36:07