更新屏幕以渲染摄像机位置

时间:2011-03-28 03:31:36

标签: c++ opengl sdl

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

键盘敲击工作正如我设置的那样,所以当按下ESC时它会退出,这很好。

这是我的Display函数,它在每个循环中调用,也可以在按下时按下(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);
}

我不能为我的生活找出原因,为什么一旦按下一个键就不会更新位置。 任何帮助将不胜感激!感谢。

1 个答案:

答案 0 :(得分:1)

CCamera()只需创建一个临时摄像头。 (然后你移动。)然后临时消失了。

也许您打算修改Camera