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)が表示されたら成功です。