【LWJGL3】60FPSでループ処理 #3

Java

Windowクラスへ以下の変数を追記しておく。

// 基準のFPS
public int fps = 60;

// FPS
public double fpsCap = fps;

public double time, processedTime;

以下の関数も追記

public boolean isUpdating() {
    double nextTime = getTime();
    double passedTime = nextTime - time;
    processedTime += passedTime;
    time = nextTime;

    while (processedTime > 1.0/fpsCap) {
        processedTime -= 1.0/fpsCap;
        return true;
    }
    return false;
}

// 現在のFPSを取得
public double getFPS() {
    return fpsCap;
}

// 時間の取得
public double getTime() {
    return (double) System.nanoTime() / (double) 1000000000;
}

Windowクラスのinit()関数の最後に以下の処理を追記

time = getTime();

Mainクラス(動作確認)

public static void main(String[] args) {
    Window window = new Window();

    // ウィンドウの初期化
    window.init();

    // 閉じるまでループ
    while (!window.isClosed()) {
        if (window.isUpdating()) {
            // イベントの更新
            window.update();

            System.out.println(window.getFPS());

            // バッファの更新
            window.swapBuffers();
        }
    }
}

現在のFPS(60.0)が表示されたら成功です。

タイトルとURLをコピーしました