Joe*_*Bid 3 c++ loops frame-rate delta
我基本上需要一个while循环才能仅以30“ FPS”运行。我被告知要这样做:“在while循环中,创建一个deltaT,如果该delT小于33毫秒,请使用sleep(33-deltaT)。”
但是我真的不太确定如何初始化增量/设置此变量的方式。我也无法从提出此建议的人那里得到答复。
我也不确定为什么睡眠中的值是33而不是30。
有谁知道我能做些什么?
这主要是为了使游戏服务器以30FPS的速度更新玩家,但是由于我没有在服务器上进行任何渲染,因此我需要一种方法来使代码处于睡眠状态,以限制每秒可以运行多少次,否则它将处理玩家的速度过快。
您基本上需要执行以下操作:
int now = GetTimeInMilliseconds();
int lastFrame = GetTimeInMilliseconds();
while(running)
{
now = GetTimeInMilliseconds();
int delta = now - lastFrame;
lastFrame = now;
if(delta < 33)
{
Sleep(33 - delta);
}
//...
Update();
Draw();
}
Run Code Online (Sandbox Code Playgroud)
这样,您就可以计算当前帧和最后一帧之间经过的毫秒数,如果它小于33毫秒(1000/30,则一秒为1000毫秒除以30 FPS = 33.333333 ....),则您可以休眠到33毫秒已过去。拥有GetTimeInMilliseconds()和Sleep()功能,它依赖于库,你正在使用和/或平台。
| 归档时间: |
|
| 查看次数: |
3112 次 |
| 最近记录: |