我制作了一个程序(在 C++ 中,使用 gl/glut)用于学习目的,您基本上可以在屏幕上运行(第一人称),并且它在场景周围有几个实体。我试图在另一台计算机上运行它并且速度完全不同,所以我搜索了这个主题,我目前正在做这样的事情:
空闲功能:
start = glutGet (GLUT_ELAPSED_TIME);
double dt = (start-end)*30/1000;
<all the movement*dt>
glutPostRedisplay ();
end = glutGet (GLUT_ELAPSED_TIME);
显示功能:
<rendering for all objects>
glutSwapBuffers ();
我的问题是:这是正确的方法吗?空闲功能后显示的场景对吗?
我尝试将 end = glutGet (GLUT_ELAPSED_TIME) 放在 glutSwapBuffers () 之前并没有注意到任何变化,但是当我将它放在 glutSwapBuffers () 之后时,它会减慢很多甚至有时会停止。
编辑:我只是注意到,以我的想法,结束开始应该是从所有绘图完成到移动更新之前经过的时间,因为空闲()将在显示()后立即被调用结束了,那么这里唯一没有考虑的时间是计算机完成所有运动所花费的时间,这是真的吗?(这应该不算什么?)
对不起,如果这太混乱了..
提前致谢。