Question

I am working on a project which uses OpenGL only (it's supposed to become a game one time to be specific), now after some weeks of development I stumbled across the possibility to catch OpenGL errors with GL.GetError(). Since I dislike that it only says what went wrong but not where, I want to get the error that occurs fixed though.

So here is what happens: When launching the app there are few frames (three or four) with StackUnderflow, it switches to StackOverflow and stays that way.

I checked my Matrix-Push-Pop consistency and didn't find any unclosed matrices. It might be interesting to know that, from what I see, lighting doesn't work (all faces of the various object have the very same brightness).

Is there any other possbile cause?

(If you want to see source, there is plenty at: http://galwarcom.svn.sourceforge.net/viewvc/galwarcom/trunk/galwarcom/ )

Was it helpful?

Solution

You need to set the matrix mode before popping since each mode has a separate stack. If you do something like this, it will underflow:

glMatrixMode(GL_MODELVIEW)
glPushMatrix(); 
... stuff with model view ...
glMatrixMode(GL_PROJECTION)
glPushMatrix() 
... stuff with project matrix ...
glPopMatrix()  // projection popped
glPopMatrix()  // projection again

You are doing something like this in drawHUD(), probably other places.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top