我正在做一个只使用OpenGL的项目(确切地说,它曾经应该成为一款游戏),现在经过几周的开发,我偶然发现了用GL.GetError()捕获OpenGL错误的可能性。因为我不喜欢它只指出哪里出了问题,而不是哪里出了问题,所以我希望修复发生的错误。
因此,事情是这样的:当应用程序启动时,使用StackUnderflow的框架很少(三到四个),它会切换到StackOverflow并保持这种状态。
我检查了矩阵-Push-Pop一致性,没有发现任何未闭合的矩阵。有趣的是,据我所见,照明不起作用(不同物体的所有面都有非常相同的亮度)。
还有其他可能的原因吗?
(如果你想看源代码,在:http://galwarcom.svn.sourceforge.net/viewvc/galwarcom/trunk/galwarcom/上有很多)
发布于 2010-12-14 05:40:06
你需要在弹出之前设置矩阵模式,因为每种模式都有一个单独的堆栈。如果你这样做,它会下溢:
glMatrixMode(GL_MODELVIEW)
glPushMatrix();
... stuff with model view ...
glMatrixMode(GL_PROJECTION)
glPushMatrix()
... stuff with project matrix ...
glPopMatrix() // projection popped
glPopMatrix() // projection again您正在drawHUD()中执行类似的操作,可能是在其他地方。
https://stackoverflow.com/questions/4433636
复制相似问题