我已经将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);
}
我不能为我的生活找出原因,为什么一旦按下一个键就不会更新位置。 任何帮助将不胜感激!感谢。
答案 0 :(得分:1)
CCamera()
只需创建一个临时摄像头。 (然后你移动。)然后临时消失了。
也许您打算修改Camera
?