OpenGL错误下溢变成溢出?

时间:2010-12-13 21:26:00

标签: opengl stack-overflow opentk

我正在开发一个仅使用OpenGL的项目(它应该成为一个特定的游戏),现在经过几周的开发后,我偶然发现了用GL.GetError()捕获OpenGL错误的可能性。 因为我不喜欢它只说出了什么问题而不是出现在哪里,所以我希望得到固定的错误。

所以这是发生的事情: 启动应用时,使用StackUnderflow的帧数很少(三个或四个),它会切换到StackOverflow并保持这种状态。

我检查了我的矩阵 - Push - Pop一致性,但没有发现任何未公开的矩阵。可能有趣的是,据我所知,照明不起作用(各种物体的所有面都具有相同的亮度)。

还有其他可能的原因吗?

(如果您想查看来源,请参阅:http://galwarcom.svn.sourceforge.net/viewvc/galwarcom/trunk/galwarcom/

1 个答案:

答案 0 :(得分:4)

您需要在弹出之前设置矩阵模式,因为每个模式都有一个单独的堆栈。如果您执行此类操作,则会下溢:

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

你在drawHUD()中做过类似的事情,可能是其他地方。

相关问题