其他分享
首页 > 其他分享> > 使用delta变量C限制while循环以30“FPS”运行

使用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