Jump to content
Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.
Posted 19 April 2014 - 11:38 PM
Posted 20 April 2014 - 12:37 AM
Posted 20 April 2014 - 01:42 AM
Because with vsync if you can't maintain 60 fps you end up missing every other blanking interval, thus your fps gets locked to half because if you say are drawing every 20ms then you'd miss the first interval, and have to wait till 33.2 to begin drawing, since the back buffer would be sitting there full at the 20ms mark waiting for the next blank. Whereas with triple buffering it can start drawing as soon as it finishes that frame at 20 ms and ends up raising your FPS since you have the image finished in time for many more intervals.
Why would it always give an FPS improvement?
I thought the entire idea behind input lag was the time you press a button till the time you see it on screen. In that case in a best case scenario its 16.6 ms of delay with vsync on since present blocks until the blanking interval, meaning if you hit a button at 20 ms after drawing the first frame in 10ms you would see the first frame at 16.6, then the game loop probably misses your input until the next go around(done drawing at 26.6, waits till 33.2 to show your action) and so on.
All buffering causes input latency. With show-A/draw-B, show-B/draw-A (double buffering), they GPU is one frame behind the CPU, which is adding 16ms input lag (@60Hz).
Tripple buffering is show-A/draw-C, show-B/draw-A, show-C/draw-B, meaning the GPU is two frames behind the CPU, creating 33ms of latency (at 60Hz).
GameDev.net™, the GameDev.net logo, and GDNet™ are trademarks of GameDev.net, LLC.