From 3ed584d1c7e61ad9ff86a4a804b5cc85e7d0cf32 Mon Sep 17 00:00:00 2001 From: Thomas Breloff Date: Thu, 23 Jun 2016 16:42:05 -0400 Subject: [PATCH 1/2] added 30 fps throttle to renderloop --- src/render.jl | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/render.jl b/src/render.jl index 5be80a4..9ff207d 100644 --- a/src/render.jl +++ b/src/render.jl @@ -37,13 +37,26 @@ function pollwindow(window) sleep(1/60) end end + +# nanoseconds between each frame +const _ns_per_frame = 1e9 / 30 + """ Blocking renderloop """ function renderloop(window::Screen) + nw = time_ns() while isopen(window) render_frame(window) GLFW.PollEvents() + + # if we've gone too fast, sleep for the remaining time + ns_diff = time_ns() - nw + nw += ns_diff + if ns_diff < _ns_per_frame + secs = (_ns_per_frame - ns_diff) * 1e-9 + sleep(secs) + end end empty!(window) yield() From 6dff324a11d28da945a38ec4d601b617a310f360 Mon Sep 17 00:00:00 2001 From: Thomas Breloff Date: Sun, 26 Jun 2016 09:24:50 -0400 Subject: [PATCH 2/2] GLVISUALIZE_FPS env var, defaults to 60 fps throttle --- src/render.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render.jl b/src/render.jl index 9ff207d..64ee10a 100644 --- a/src/render.jl +++ b/src/render.jl @@ -39,7 +39,7 @@ function pollwindow(window) end # nanoseconds between each frame -const _ns_per_frame = 1e9 / 30 +const _ns_per_frame = round(UInt64, 1e9 / parse(Float64, get(ENV, "GLVISUALIZE_FPS", "60"))) """ Blocking renderloop