Use GLFW swap interval for force vsync to monitor

This commit is contained in:
Doyle Thai 2016-06-17 16:32:59 +10:00
parent 9861a02ed1
commit c54e6323a7
1 changed files with 13 additions and 6 deletions

View File

@ -92,14 +92,19 @@ int main()
glfwSetWindowUserPointer(window, static_cast<void *>(&game));
f32 startTime = static_cast<f32>(glfwGetTime());
f32 secondsElapsed = 0.0f; // Time between current frame and last frame
#if 0
// TODO(doyle): Get actual monitor refresh rate
i32 monitorRefreshHz = 60;
f32 targetSecondsPerFrame = 1.0f / static_cast<f32>(monitorRefreshHz);
f32 startTime = static_cast<f32>(glfwGetTime());
//glfwSwapInterval(1);
i32 monitorRefreshHz = 60;
f32 targetSecondsPerFrame = 1.0f / static_cast<f32>(monitorRefreshHz);
#else
// TODO(doyle): http://gafferongames.com/game-physics/fix-your-timestep/
// NOTE(doyle): Prevent glfwSwapBuffer until a vertical retrace has
// occurred, i.e. limit framerate to monitor refresh rate
glfwSwapInterval(1);
#endif
/* Main game loop */
while (!glfwWindowShouldClose(window))
@ -120,15 +125,17 @@ int main()
/* Swap the buffers */
glfwSwapBuffers(window);
f32 endTime = static_cast<f32>(glfwGetTime());
f32 endTime = static_cast<f32>(glfwGetTime());
secondsElapsed = endTime - startTime;
#if 0
// TODO(doyle): Busy waiting, should sleep
while (secondsElapsed < targetSecondsPerFrame)
{
endTime = static_cast<f32>(glfwGetTime());
secondsElapsed = endTime - startTime;
}
#endif
LOCAL_PERSIST f32 titleUpdateFrequencyInSeconds = 0.5f;