2011-11-30 41 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]来完成的。