更新屏幕渲染相机位置

更新屏幕渲染相机位置

问题描述:

我已经将使用GLUT的C++源代码转换为使用SDL/OpenGL问题是因为我已经从GLUT改变了'相机的位置没有得到更新,所以不是使用键盘移动,屏幕就在那里呈现它所需要的并且不会更新。更新屏幕渲染相机位置

键盘笔画正在工作,因为我设置了它,所以当按下ESC时它退出,这很好。

这里是我的显示功能调用此方法的每一个循环,也和按键(WASD):

glClear(GL_COLOR_BUFFER_BIT); 
glLoadIdentity(); 
Camera.Render(); 
glTranslatef(0.0,-0.5,-6.0); 

....Draw some stuff.... 

SDL_GL_SwapBuffers(); 

接下来的Camera.Render();

SF3dVector ViewPoint = Position+ViewDir; 
gluLookAt(Position.x,Position.y,Position.z,ViewPoint.x,ViewPoint.y,ViewPoint.z,UpVector.x,UpVector.y,UpVector.z); 

现在,一旦有键按下发生了什么(W应该前进的摄像机):

case SDLK_w: 
    CCamera().MoveForward(-0.1) ; 
    Display(); 
    break; 

最后CCamera()MoveForward()函数:

MoveForward(GLfloat Distance){ 
    Position = Position + (ViewDir*-Distance); 
} 

我不能为我的生活找到解决办法,为什么一旦一个按键被按下,它就不会更新位置。 任何帮助将不胜感激!谢谢。

CCamera()只是创建一个临时相机。 (然后你移动。)然后临时消失。

也许你的意思是修改Camera

+0

你我的朋友是高手!难怪你的名字是GMan。非常感谢。我的问题现在似乎很愚蠢。 – Elgoog 2011-03-28 03:41:33

+0

@Elgoog:没关系,每个人都至少做一次。 – GManNickG 2011-03-28 03:51:19