2011-11-30 40 views
0

我有一個天空盒和一些有波浪效果的水。相機移動時,天空盒和水會移動。這一切都很好,但是當我按下空間時,我希望攝像機向上移動,但是沒有天空盒或水移動。天空盒不動,但水和攝像機一樣,我不想要。有人知道爲什麼OpenGL應該不應該翻譯起來

//Camera 
     glRotatef(elevation, 1,0,0); 
     glRotatef(heading, 0,1,0); 
     glRotatef(rot, 0,0,1); 
     glTranslatef(-eyeX,-eyeY,-eyeZ); 

     //Skybox 
     glPushMatrix(); 
      glTranslatef(eyeX,0,eyeZ); 
      drawCube(); 
      drawSea(); 
     glPopMatrix(); 

drawSea()中沒有使用任何翻譯變量。

+2

我認爲現在是瞭解場景管理的最佳時機 – Kos

+0

這將有助於向我們提供更多的相關代碼,但不知道drawSea()和drawCube()中發生了什麼,只有這麼多我們才能確定 – nonVirtualThunk

回答

1

那麼,對於天空盒,你不應該試圖「補償」相機。將模型視圖矩陣重置爲標識並僅應用相機旋轉要容易得多。實際上,這是通過簡單地取模型視圖矩陣並將最後一列和最後一行清除爲[0,0,0,1]來完成的。