如何在Java中将帧速率限制在60 fps?

2022-09-02 23:00:55

我正在写一个简单的游戏,我想将帧速率限制在60 fps,而不会让循环占用我的CPU。我该怎么做?


答案 1

您可以阅读游戏循环文章。在尝试实现任何内容之前,首先要了解游戏循环的不同方法,这一点非常重要。


答案 2

我拿了@cherouvim发布的游戏循环文章,我采取了“最佳”策略并试图将其重写为java Runnable,似乎对我有用

double interpolation = 0;
final int TICKS_PER_SECOND = 25;
final int SKIP_TICKS = 1000 / TICKS_PER_SECOND;
final int MAX_FRAMESKIP = 5;

@Override
public void run() {
    double next_game_tick = System.currentTimeMillis();
    int loops;

    while (true) {
        loops = 0;
        while (System.currentTimeMillis() > next_game_tick
                && loops < MAX_FRAMESKIP) {

            update_game();

            next_game_tick += SKIP_TICKS;
            loops++;
        }

        interpolation = (System.currentTimeMillis() + SKIP_TICKS - next_game_tick
                / (double) SKIP_TICKS);
        display_game(interpolation);
    }
}

推荐