2010-12-13 77 views
0

我正在研究一个只使用OpenGL的项目(它应该成为一个具体的游戏),现在经过几周的开发,我偶然发现了用GL.GetError()捕捉OpenGL错误的可能性。 由于我不喜欢它只说出了什么地方出了问题,但不是在哪里,我想得到固定发生的错误。OpenGL错误下溢变成溢出?

所以这里发生了什么: 当启动应用程序有几帧(三个或四个)与StackUnderflow,它切换到StackOverflow并保持这种方式。

我检查了我的Matrix-Push - Pop一致性,没有找到任何未封闭的矩阵。从我所看到的情况来看,可能有趣的是,照明不起作用(各种物体的所有面都具有相同的亮度)。

有没有其他possbile的原因?

(如果你想看到源,有很多在:http://galwarcom.svn.sourceforge.net/viewvc/galwarcom/trunk/galwarcom/

回答

4

你需要大跌眼镜,因为每个模式都有一个独立的堆栈之前设置的矩阵模式。如果你这样做,它会下溢:

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

你在drawHUD()中做了这样的事情,可能在其他地方。

+0

非常感谢你:) – 2010-12-13 21:43:11