glfw のタイマー

glfw3 では glfwGetTime を使って自作する必要があるようです。

以下 "<---" で示した部分がタイマーに関する部分。
[メインループ]の中の通常の描画の部分を[if 節]で囲む。 lastTime の更新は[if 節]のなかで行う。

int main(int argc, char** argv)
{
    // 初期設定など
    ....


    // タイマーのセッティング
    double FPS = 30.0 // <--- 一秒間に更新する回数(30 か 60) 
    double currentTime, lastTime, elapsedTime;  // <---
    currentTime = lastTime = elapsedTime = 0.0; // <---
    glfwSetTime(0.0); // <--- タイマーを初期化する

    // [メインループ]
    while( !glfwWindowShouldClose(window) ) {

        currentTime = glfwGetTime();  // <---
        elapsedTime = currentTime - lastTime; // <---
        
        // [if 節]
        if (elapsedTime >= 1.0/FPS) { 
            
            // 通常の描画
            ...

            lastTime = glfwGetTime(); // <---
        } 
    }

    glfwDestroyWindow(window);
    glfwTerminate();
    exit( EXIT_SUCCESS );

    return(0);
}


ただし他にうまい方法があるのかも知れません。

広告を非表示にする