2010-12-13 3 views
0

Я работаю над проектом, который использует только OpenGL (он должен стать игрой один раз, чтобы быть конкретным), теперь, после нескольких недель разработки, я наткнулся на возможность поймать ошибки OpenGL с помощью GL.GetError(). Поскольку мне не нравится, что он говорит только то, что пошло не так, но не где, я хочу получить ошибку, которая происходит исправлена.Ошибка OpenGL Ошибка при переполнении?

Так вот что происходит: При запуске приложения Есть несколько кадров (три или четыре) с StackUnderflow, он переключается на StackOverflow и остается таким образом.

Я проверил свою матрицу Push - Pop консистенции и не нашел никаких незакрытых матриц. Было бы интересно узнать, что из того, что я вижу, освещение не работает (все грани различного объекта имеют одинаковую яркость).

Есть ли какая-либо другая возможная причина?

(Если вы хотите, чтобы увидеть источник, есть много на: http://galwarcom.svn.sourceforge.net/viewvc/galwarcom/trunk/galwarcom/)

ответ

4

Вам необходимо установить режим матрицы перед появлением, поскольку каждый режим имеет отдельный стек. Если вы делаете что-то вроде этого, он будет Underflow:

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

Вы делаете что-то подобное в drawHUD(), вероятно, в других местах.

+0

Спасибо большое :) –

Смежные вопросы