繁体   English   中英

这会降低帧速率吗?

[英]Would this lower frame rate?

我正在制作一个游戏,并且要求是它至少有30FPS并且不应低于此值。 我下面会得到这个吗? 还是我在某处? 很多帮助将不胜感激。

private long period = 6 * 1000000;
private static final int DELAYS_BEFORE_YIELD = 5;
long before, after, difference, sleep, oversleep = 0;
int delays = 0;
while (running)
{
    before = System.nanoTime();
    after = System.nanoTime();
    difference = after - before;
        if (sleep < period && sleep > 0)
    {
    try
    {
        Thread.sleep(sleep / 35000L);
        oversleep = 0;
    }
    catch (InterruptedException e)
    {

    }
    }
    else if (difference > period)
    {
    oversleep = difference - period;
    }
    else if (++delays >= DELAYS_BEFORE_YIELD)
    {
    Thread.yield();
    oversleep = 0;
    delays = 0;
    }
    else
    {
    oversleep = 0;
    }
}

您可以设置帧速率的上限,但不能保证始终遵循的下限。

你可以让一个函数每秒调用不超过30次,但你不能确定每秒至少调用30次。 在30 fps时,你有0.03的时间将在你的线程之间分配,通常绘图是最重的(除非你有复杂的操作,如AI或其他什么,但应该通过降低速率或预先计算什么可以解决预计算)。

如果time of draw + time of logic > 0.03则无法使游戏至少以30fps运行。

很好,你提前问,因为我认为最好使用计时器。 这会把事情弄清楚。 (虽然可以按你的方式完成。)

对不起,这个没有答案,但我认为这是一个值得的建议。

查看一些游戏/动画框架的方法。

暂无
暂无

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

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