2014-01-09 35 views
0

我有以下場景。如何爲場景中的特定對象反轉gluLookat變換?

 glMatrixMode (GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective(45, w/h,.1, 100); 

    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    gluLookAt(cameraX,cameraY,cameraZ,0.0,0.0,0.0,0.0,1.0,0.0); 

     drawtheBOT(); 
     drawUserTrackedBall(); // This ball moves in 3d with user controlling it. 

當我改變cameraX,cameraY,cameraZ的值時,球的運動也會根據glulookat值而改變。例如,如果我從正x方向看,我原來的左右運動現在會變成近距離運動。

我該如何取消lookat轉換?

回答

0
glMatrixMode(GL_MODELVIEW); 
glPushMatrix(); 
glLoadIdentity(); 

drawUserTrackedBall(); 

glMatrixMode(GL_MODELVIEW); 
glPopMatrix(); 

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 

glPushMatrix(); 
gluLookAt(cameraX,cameraY,cameraZ,0.0,0.0,0.0,0.0,1.0,0.0); 
drawtheBOT(); 

glMatrixMode(GL_MODELVIEW); 
glPopMatrix(); 

drawUserTrackedBall(); // This ball moves in 3d with user controlli 

glMatrixMode(GL_MODELVIEW); 
glLoadMatrix(bot_modelview); 
drawtheBOT(); 

glMatrixMode(GL_MODELVIEW); 
glLoadMatrix(ball_modelview); 
drawUserTrackedBall(); 

glMatrixMode的電話是不是多餘的,因爲我不知道的繪圖函數裏面發生了什麼。