2014-01-09 32 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的电话是不是多余的,因为我不知道的绘图函数里面发生了什么。