Rena
Rena

Reputation: 646

glColor, glMatrixMode mysteriously giving "Invalid operation" errors

Recently my game-engine-in-progress has started throwing OpenGL errors in places that they shouldn't be possible. After rendering a few frames, suddenly I start getting errors from glColor:

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

If I don't call glColor here, I later get an invalid operation error from glMatrixMode.

According to the GL manual, glColor should never raise an error, and glMatrixMode only if it's between glBegin and glEnd, which I've checked is not the case. Are there any other reasons these functions can raise an error, that I'm not aware of? Maybe related to render-to-texture/renderbuffer extensions? I've been debugging like mad and can't find anything that should cause such failures. The whole program is a bit too large and complex to post here. It's using luagl, which is just a thin wrapper around the OpenGL API, and SDL. The reported version is: 2.1 Mesa 7.10.2

Upvotes: 1

Views: 1754

Answers (2)

Rena
Rena

Reputation: 646

https://bugs.freedesktop.org/show_bug.cgi?id=48535 Looks like this was actually a driver bug. >.>

Upvotes: 1

Ville Krumlinde
Ville Krumlinde

Reputation: 7131

glColor will result in an error if there is no active OpenGL context. If you are using multiple contexts or glBindFramebuffer check that you always switch ones that are valid. Also remember that using OpenGL calls from multiple threads require special attention.

Upvotes: 1

Related Questions