2010-12-13 76 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