GLFW - VSync On/Off

Monkey Forums/Monkey Code/GLFW - VSync On/Off

dopeyrulz(Posted 2013) [#1]
NO LONGER REQUIRED - FUNCTIONALITY HAS BEEN IMPLEMENTED INTO v77c (see SetSwapInterval)

This code will allow you to enable/disable VSync in GLFW. Works in v72 or better.

Create the following in your modules\<modulename> folder:

graphics.monkey
Strict
Import mojo

#if TARGET = "glfw"
Import "native/graphics.${TARGET}.${LANG}"

Extern
	Function VSyncOn:Void()
	Function VSyncOff:Void()
Public
#end


native\graphics.glfw.cpp
static void VSyncOn() {
	glfwSwapInterval(1);
}

static void VSyncOff() {
	glfwSwapInterval(0);
}



ImmutableOctet(SKNG)(Posted 2013) [#2]
You could make this a lot more efficient by doing this:

[monkeycode]
Extern

Function SetVSync:Void(Value:Bool)="glfwSwapInterval"
Function VSyncOn:Void()="glfwSwapInterval(1)"
Function VSyncOff:Void()="glfwSwapInterval(0)"

Public
[/monkeycode]
You don't even need a separate module, let alone an external 'cpp' file.

But wait a minute, am I missing something? This doesn't really do anything for me.


mr_twister(Posted 2013) [#3]
Thanks, this is exactly what I was looking for!

(Sonickidnextgen, it does make a difference when you are running your game fullscreen at +60fps. fast movement looks choppy if graphic updates are not in sync with your monitor's refresh cycle)


AdamRedwoods(Posted 2013) [#4]
there is a new monkey config setting in v76a:

Added #GLFW_SWAP_INTERVAL app config setting for glfw target, set to -1 to not set swap interval at all (ie: use driver default). Defaults to -1 for BW compatiblity.




ImmutableOctet(SKNG)(Posted 2013) [#5]
Mr_twister, I was referring to the fact that it literally did nothing for me. Fraps reported the same 60 frames per-second (16ms per-frame). I haven't tried it in fullscreen, is it any different? I thought the GLFW version of Mojo/BBGame capped (Slept, delayed, etc) everything based on the update-rate, and didn't care if it was rendering or not; I could be wrong though.