2012-03-28 91 views
0

如果我打電話OpenGL的矩陣堆棧

float before[16]; 
float during[16]; 
float after[16]; 
glGetFloatv(GL_MODELVIEW_MATRIX, before); 
glPushMatrix(); 
glGetFloatv(GL_MODELVIEW_MATRIX, during); 
glPopMatrix(); 
glGetFloatv(GL_MODELVIEW_MATRIX, after); 

的前值和不同了。我錯過了什麼,我曾經想過,這些功能都不應該修改矩陣。看來波普是罪魁禍首,因爲在此期間與之前相同。

+1

這聽起來不對。之前/之後的價值是什麼?你認出他們嗎?我唯一的想法是檢查glGetError以防萬一出現其他問題。 – Tim 2012-03-28 19:42:20

+0

實際上,所有3個檢索矩陣的值應該與此代碼相同。無論如何,矩陣堆棧已被棄用,並且完全從OpenGL-3及更高版本中刪除。 – datenwolf 2012-03-28 19:51:55

+0

「之前和之後的值是不同的。」他們有多「不同」?你正在對它們進行一個'=='測試,還是你正在做一個適當的浮點平等測試? – 2012-03-28 20:06:13

回答

0

他們應該是一樣的。 glPushMatrix推送當前矩陣的副本,之後,前一個不應該受到影響,並且在glPopMatrix之後會再次變爲當前矩陣。

檢查glGetError。如果矩陣堆棧溢出,可能會發生不好的事情。