2D rendererSDL 3.2

SDL_SetRenderVSync

Turns vsync on or off for the renderer: whether SDL_RenderPresent waits for the monitor's refresh.

Signature

bool SDL_SetRenderVSync(SDL_Renderer *renderer, int vsync);

How it works

With vsync 1, each present waits for the next refresh: no tearing and no wasted frames, and the loop runs at the monitor's rate (60, 144 Hz…). With 0 the loop runs as fast as it can, which is useful to measure performance but burns power.

Parameters

rendererSDL_Renderer *

The renderer.

vsyncint

How many refreshes to wait per present.

Common values

SDL_RENDERER_VSYNC_DISABLED (0)
No waiting.
1
Every refresh (normal vsync).
2
Every second refresh (e.g. 30 fps on a 60 Hz monitor).
SDL_RENDERER_VSYNC_ADAPTIVE (-1)
Like 1, but a late frame is shown at once. Not everywhere.

Return value

true on success; false if this value is not supported.

Example

example.cpp
1if (!SDL_SetRenderVSync(renderer, SDL_RENDERER_VSYNC_ADAPTIVE))
2    SDL_SetRenderVSync(renderer, 1);   // fall back to plain vsync
Official SDL wiki