使用delta变量C限制while循环以30“FPS”运行
作者:互联网
我基本上需要一个while循环才能以30“FPS”运行.
有人告诉我这样做:
“在你的while循环中,做一个deltaT,如果deltaT小于33毫秒,则使用sleep(33-deltaT).”
但我真的不太确定如何初始化delta /将此变量设置为什么.我也无法得到建议此人的回复.
我也不确定为什么睡眠中的值是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();
}
这样你就可以计算当前帧和最后一帧之间传递的毫秒数,如果它小于33毫秒(1000 / 30,1000毫秒,一秒钟除以30 FPS = 33.333333 ……),那你就睡到33毫秒已经过去了.对于GetTimeInMilliseconds()和Sleep()函数,它取决于您正在使用的库和/或平台.
标签:frame-rate,c,loops,delta 来源: https://codeday.me/bug/20190722/1505496.html