繁体   English   中英

更新屏幕以呈现相机位置

[英]Updating screen to render camera position

我已经将C ++源代码从使用GLUT转换为使用SDL / OpenGL。问题是,由于我已经从GLUT更改了,“相机的位置未得到更新,因此屏幕只是坐在那里呈现了所需的内容,而不是使用键盘来回移动。不更新。

键盘笔触按我设置的方式工作,因此按ESC时退出,这很好。

这是我的Display函数,它在每个循环中以及在keypress(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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM