2012-12-09 77 views
-1

儘管我使用的是opengl es 1.1,但我想嘗試使用我自己的矩陣東西,我建立了一個名爲fpsmatrixupdate()的fps相機矩陣函數。 那麼我這樣稱呼它:如何重置opengl modelview矩陣?

fpsmatrixupdate(); //this function generated a matrix called mat 
drawbox(min,max) 

一切都很正常,直到我試圖繪製另一盒:

fpsmatrixupdate(); //this function generated a matrix called mat 
drawbox(min,max); 
glLoadIdentity(); // I tried to call this before drawbox2 but box2 doesn't show 
drawbox2(min,max); 

問題:爲什麼這個工作?

fpsmatrixupdate(); //this function generated a matrix called mat 
drawbox(min,max); 
glLoadMatrixf(mat); // mat is fps camera update function generated matrix, 
drawbox2(min,max); 

如果我想繪製200個不同位置的盒子,我必須調用glLoadMatrixf(mat)200次嗎?如果我不叫glLoadMatrixf(墊)復位矩陣,第二個框的變換是基於第一箱..

如果有人想看到代碼,他們幾乎是99%,這一示範項目複製: http://www.codesampler.com/oglsrc/oglsrc_5.htm#ogl_fps_controls

回答

2

是的,如果你想基於每個對象轉換的對象的位置,你必須每次都做一個glLoadMatrix。計算變換矩陣一次並將它們存儲在每個對象的場景數據中以便於訪問是有意義的。