簡體   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