I'm deciding on whether or not to use VSync for a new game that I've been developing using OpenGL. The goal is to provide the user with the best gaming experience, and to have a good balance between performance and quality. This game is designed to run on both older (Intel/Netbook) computers and newer (NVidia/i7 desktop) computers. I am aware that the purpose of VSync is to prevent tearing, however; I have never been able to reproduce this tearing issue even with VSync turned off. To provide the best experience; should VSync be turned on, or off?
-
1Are you sure that when you turn off VSync in your application, the graphics card driver does not keep it on anyway? There's often driver settings that allow to supersede application settings. In my experience screen tearing is quite an easily reproductible issue. – rotoglup May 07 '11 at 21:14
3 Answers
There are many things that can be said about this issue. Let me count the way:
- if you don't see tearing, you're likely vsync'ed, even if you think you're not. Reasons may vary, but ultimately, swapping buffers in the middle of the frame is very noticeable if any movement is happening (one reason might be that you're not configured to flip buffers, so something has to do a copy of your framebuffer)
- vsync on has noticeable artifacts too. Typically, it creates frames that display for a variable amount of time, more tied to the display refresh rate than your rendering rate. This can create micro-stuttering, and is very hard to control, as you don't know when you generate your frame which tick it will display at, so, you can't compensate for motion artifacts. This is why some people try to lock their rendering speed to the refresh rate. Always render at 60fps (or 30fps), time update is
time += 16.7ms
John Carmack has been asking for a mode that does "vsync at 60Hz, but don't sync if I missed the deadline" for what I assume would be this reason. - vsync on saves power (important on netbooks)
- vsync off reduces input latency (when your input is 3 frames before display, it can start to matter). You can try to compensate some of that, but ultimately, it is hard to inject input updates at the very last minute.
So the bottom line answer is that there is no perfect answer. It really depends on what matters more for your game. Things you need to look at: which framerate you want to achieve, how much input latency matters, how much movement is there in the game, is power going to be a concern.

- 17,760
- 43
- 62
-
Very good points. For me as a Gamer, VSync ON is a must as tearing totally ruins games for me, but micro stuttering is even worse. – Michael Stum May 07 '11 at 21:17
For the best user experience, place an option in your menu to turn VSync on/off. This way the user can decide. You might not be able to reproduce tearing, but it's definitely a real issue on some systems.
As for what should be the default setting, I'm not sure, I think it's your choice. I prefer to have vertical sync off by default because it reduces performance a bit when enabled and most people don't recognize the tearing or don't care about it, but there are good reasons to enable it by default, too.

- 49,103
- 10
- 104
- 136
-
@schnaader: How would you explain a non tech-savvy user what such an option does and when they might need it? – Matti Virkkunen May 07 '11 at 19:56
-
@Matti - most gamers will be aware of tearing and some will be prepared to accept it for getting that extra 2% (or whatever) of framerate out of the game. – ChrisF May 07 '11 at 19:59
-
-
@Matti - oops! I was thinking of answering, but when I saw this answer I stopped reading (my bad) and just responded to your comment. – ChrisF May 07 '11 at 20:02
-
@Matti: Good question, but I think this is a different problem. Most games I saw just have a "VSync" option, most don't even use the long form "vertical sync". I'm sure there are good ways to explain it. – schnaader May 07 '11 at 20:02
-
@all commenters - here's a thing I was always curious about. If vsync is on, your frame rate will be limited by refresh rate of your monitor (for 99.9% of gamers, that would be an LCD with 60fps refresh interval). If you disable vsync you could get 65 or 95fps out of the game. But what's the point if the monitor only draws 60fps? Seems the only time "advanced" gamer disables VSync is to see how much max fps they can squeeze out of their new overclocked, supercooled SLI graphics setup. Otherwise, everything higher than monitor refresh is a waste anyway. – DXM May 07 '11 at 20:09
-
Imagine a situation in a game where fps drops from 65 to 59 while vsync is off. Also imagine same situation when vsync is on. In first case it will only result in slight FPS drop, in second FPS will drop from 60 to 30. Also if physics calculations are done once per frame, you'd want as much FPS as possible. – n0rd May 07 '11 at 20:47
-
@DXM: disabling VSync does allow to reduce the latency between user actions and actual game feedback. This is valuable for 'hardcore' gamers while playing FPS, as it allows to have faster reactions to enemies/other players actions. – rotoglup May 07 '11 at 21:18
-
@n0rd Physics calculations aren't done on my render threat, they're all done on a separate, dedicated physics thread anyways. – bbosak May 07 '11 at 21:56
I believe the default for VSync should be on (based on all my gaming, not programming experience :) ). Just because you don't see it, doesn't mean you shouldn't follow a good practice.
- maybe you can't stare as closely at the screen as some other gamer
- maybe when you see a little tear you are not as annoyed as some gamers
- maybe your specific screen hides tear better than other screens would
And as schanaader mentioned, typically games would leave vsync as a configuration option somewhere in the video settings menu. Default should still be "on" for those that don't know what vsync means, and if the user is knowledgeable enough, they have the option of tweaking it to see what the difference is

- 4,413
- 1
- 19
- 29