VSync — wat is het, werkingsprincipe en configuratie

Auteur: IT Sectr Gepubliceerd: 2026-04-01 Leestijd: 8 min

VSync (Vertical Synchronization) — technologie die de weergave van elk nieuw GPU-frame synchroniseert met de verversingsfrequentie van het beeldscherm, waardoor beeldbreuk wordt geëlimineerd. Volgens Apple Metal Documentation is synchronisatie met VBlank verplicht voor vloeiende rendering op mobiele apparaten. Screen tearing treedt op wanneer een frame wordt bijgewerkt tijdens de verticale scan, en VSync voorkomt deze vermenging.

Belangrijkste punten

  • VSync — mechanisme dat de GPU synchroniseert met de verversingsfrequentie van het beeldscherm door te wachten op VBlank
  • Screen tearing — zichtbare beeldbreuk wanneer het frame midden in de schermscan verandert
  • Dubbele buffering — de primaire methode om VSync te implementeren met front buffer en back buffer
  • Input lag — bijwerking van VSync, die de vertraging tussen gebruikersactie en weergave vergroot
  • Adaptieve synchronisatie — modern alternatief voor VSync dat de nadelen ervan elimineert

Wat is VSync

VSync (Vertical Synchronization) — een hardware-softwaremechanisme dat de GPU dwingt te wachten op het verticale uitschakelsignaal (VBlank) voordat een nieuw frame wordt weergegeven. Zonder VSync kan de GPU frames op elk moment verzenden, zelfs wanneer het beeldscherm bezig is met het renderen van het huidige frame, wat leidt tot beeldbreuk langs een horizontale lijn.

Op mobiele apparaten is VSync geïmplementeerd op het niveau van de grafische driver en het besturingssysteem. iOS gebruikt VBlank-synchronisatie via Metal, Android via SurfaceFlinger en BufferQueue. Met verticale synchronisatie ingeschakeld, kan de FPS van de applicatie de verversingsfrequentie van het beeldscherm niet overschrijden — 60, 90 of 120 Hz, afhankelijk van het apparaatmodel.

De term verticale synchronisatie is afkomstig van het werkingsmechanisme van CRT-monitoren, waarbij de elektronenstraal het beeld regel voor regel van boven naar beneden tekende. Na voltooiing van een frame keerde de straal terug naar de linkerbovenhoek — dit moment werd verticale uitschakeling genoemd. Moderne LCD- en OLED-schermen hebben deze term behouden, hoewel ze fysiek anders werken.

Hoe werkt verticale synchronisatie

GPU rendert frames in de back buffer, terwijl het beeldscherm uit de front buffer leest. VSync garandeert dat het wisselen van buffers (swap) alleen plaatsvindt op het moment van VBlank — wanneer het beeldscherm het weergeven van het huidige frame heeft voltooid en klaar is voor het volgende. Dit mechanisme wordt dubbele buffering met synchronisatie via VBlank genoemd.

Mechanisme van dubbele buffering

Dubbele buffering gebruikt twee buffers: front buffer, weergegeven op het scherm, en back buffer, waarin de GPU het huidige frame schrijft. Wanneer het frame gereed is, wisselen de buffers van plaats. Met VSync ingeschakeld wordt deze wisseling uitgesteld tot de dichtstbijzijnde VBlank. De GPU blijft inactief als het frame eerder dan VBlank gereed is, wat de prestaties vermindert maar tearing elimineert.

cpp
// OpenGL — VSync inschakelen via WGL_EXT_swap_control
HDC hdc = wglGetCurrentDC();
PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT =
    reinterpret_cast<PFNWGLSWAPINTERVALEXTPROC>(
        wglGetProcAddress("wglSwapIntervalEXT"));
wglSwapIntervalEXT(1); // 1 = VSync ingeschakeld, 0 = uitgeschakeld

VBlank-wachttijd

VBlank — een korte tijdsperiode tussen de laatste regel van het huidige frame en de eerste regel van het volgende. Op dit moment werkt het beeldscherm geen pixels bij en vindt het wisselen van buffers plaats zonder artefacten. De duur van VBlank hangt af van de verversingsfrequentie: bij 60 Hz op een 1080p-scherm duurt VBlank ongeveer 1.4 ms. Als de GPU de rendering niet voor VBlank kan voltooien, wordt het frame overgeslagen en toont het beeldscherm het vorige frame nog een cyclus — dit wordt waargenomen als stotteren (stutter).

Drievoudige buffering lost het probleem van GPU-inactiviteit op door een derde buffer toe te voegen. De GPU kan onmiddellijk beginnen met het renderen van het volgende frame, zelfs als een van de back buffers op VBlank wacht. Dit verhoogt de FPS met VSync, maar voegt een extra frame vertraging toe. Op mobiele apparaten wordt drievoudige buffering gebruikt in sommige game-engines en in Vulkan via de Mailbox-modus.

Belangrijkste problemen zonder VSync

VSync uitgeschakeld biedt maximale FPS en minimale input lag, maar ten koste van visuele artefacten. Voor mobiele games en applicaties met vloeiende animatie is de keuze tussen VSync en het uitschakelen ervan een compromis tussen beeldscherpte en responsiviteit van de bediening.

Beeldbreuk (Screen Tearing)

Screen tearing — een horizontale breuk waarbij het bovenste deel van het scherm het vorige frame toont en het onderste deel al het volgende. Dit gebeurt wanneer de GPU buffers midden in de scancyclus van het beeldscherm wisselt. Op mobiele apparaten is tearing bijzonder merkbaar bij snel scrollen of in dynamische scènes met een hoge framerate. OLED-schermen met hun onmiddellijke reactie maken tearing contrastrijker in vergelijking met LCD.

De intensiteit van tearing hangt af van de verhouding tussen FPS en verversingsfrequentie. Bij 60 FPS op een 60 Hz-scherm verschijnt tearing als één statische lijn, en bij 300 FPS op 60 Hz als meerdere golvende breuken die van boven naar beneden bewegen. Hoe hoger de FPS ten opzichte van de verversingsfrequentie, hoe meer breuken en hoe zichtbaarder ze zijn.

Invoervertraging (Input Lag)

Input lag bij VSync — de vertraging tussen het indrukken van een knop en het tonen van het resultaat op het scherm. Verticale synchronisatie voegt gemiddeld één frame vertraging toe (16.7 ms bij 60 Hz), en bij drievoudige buffering tot twee frames. Voor casual applicaties is deze vertraging onmerkbaar, maar voor shooters, vechtspellen en ritmegames is deze kritiek: professionals merken zelfs een vertraging van 8 ms op.

Volgens onderzoek van NVIDIA (2024) bedraagt de gemiddelde input lag in CS:GO bij 60 FPS zonder VSync 22 ms, en met VSync 39 ms. Bij 144 FPS neemt het verschil af tot respectievelijk 14 vs 18 ms. Op mobiele platforms is input lag van VSync minder kritisch vanwege aanraakinvoer, waarbij de hardwarevertraging van het touchscreen (10–30 ms) de extra synchronisatievertraging maskeert.

VSync configureren in mobiele ontwikkeling

In mobiele ontwikkeling wordt VSync beheerd via grafische API's, game-engines en systeeminstellingen van het besturingssysteem. iOS biedt minder controle, Android meer via Vulkan en OpenGL ES. De keuze van de modus hangt af van het type applicatie: games, UI of video.

VSync in Unity en Unreal Engine

Unity gebruikt de instelling QualitySettings.vSyncCount: 0 — uitgeschakeld, 1 — VSync bij elke VBlank, 2 — bij elke tweede (FPS halveert). In Unreal Engine wordt VSync beheerd via de console-opdracht r.VSync en DefaultEngine.ini. Voor mobiele builds wordt aanbevolen VSync in Unity uit te schakelen en een eigen FPS-begrenzer te gebruiken, omdat de ingebouwde VSync in Android SurfaceFlinger onvoorspelbare vertragingen kan veroorzaken.

csharp
// Unity — VSync en FPS beheren
void Awake()
{
    // 0 = VSync uitgeschakeld, 1 = VSync ingeschakeld
    QualitySettings.vSyncCount = 0;
    // Eigen FPS-begrenzer in plaats van VSync
    Application.targetFrameRate = 60;
}

VSync in Vulkan en Metal

Vulkan biedt volledige controle via VkSwapchainPresentInfo en presentMode: VK_PRESENT_MODE_FIFO_KHR — klassieke VSync, VK_PRESENT_MODE_MAILBOX_KHR — drievoudige buffering zonder wachten, VK_PRESENT_MODE_IMMEDIATE_KHR — zonder synchronisatie. Metal in iOS beheert VSync via CAMetalLayer.displaySyncEnabled. Vanaf iOS 14 beveelt Apple aan om standaard displaySyncEnabled = true te gebruiken voor alle applicaties, behalve games met arcade-bediening.

ModusBeschrijvingVertraging
FIFOKlassieke VSync met wachten op VBlank1 frame
MailboxDrievoudige buffering, oude frames weggooien1–2 frames
ImmediateZonder synchronisatie, maximale FPS0 frames

FPS begrenzen zonder VSync

FPS-begrenzer — een alternatief voor VSync waarbij de applicatie de framerate programmatisch beperkt, zonder te wachten op VBlank. Deze aanpak biedt voorspelbare vertraging en is niet afhankelijk van de verversingsfrequentie van het beeldscherm. Op Android wordt FPS-begrenzing geïmplementeerd via Choreographer, op iOS via CADisplayLink met handmatige controle van de weergavetijd.

VSync en moderne synchronisatietechnologieën

Traditionele VSync heeft een fundamenteel nadeel: het is gekoppeld aan een vaste verversingsfrequentie van het beeldscherm. Als de GPU 45 FPS produceert op een 60 Hz-scherm, kan VSync geen 45 frames tonen — het toont 30 (elke tweede VBlank overslaand) of wisselt tussen 60 en 30 met ongelijke intervallen. Dit creëert stotteren (stutter), wat de game-ervaring meer verpest dan tearing.

Adaptive Sync (FreeSync, G-Sync, Apple ProMotion) lost dit probleem op door de verversingsfrequentie van het beeldscherm dynamisch aan te passen aan de FPS van de applicatie. Als de applicatie 47 FPS produceert, schakelt het beeldscherm naar 47 Hz — elk frame wordt precies één keer weergegeven, zonder breuken en stotteren. ProMotion in iOS selecteert automatisch de frequentie van 24 tot 120 Hz, waarbij vloeiendheid en energieverbruik in balans worden gebracht.

Op mobiele apparaten wordt Adaptive Sync de standaard: iPad Pro (2017+) met ProMotion, Android-vlaggenschepen met LTPO-schermen (Samsung Galaxy S23 Ultra, Google Pixel 8 Pro) ondersteunen dynamische verversingsfrequenties van 1 tot 120 Hz. Voor de ontwikkelaar betekent dit dat VSync in traditionele zin wordt vervangen door systeembeheer — het volstaat om targetFrameRate in te stellen, en het besturingssysteem past zelf de verversingsfrequentie aan voor een optimale balans tussen vloeiendheid en batterijduur.

Veelgestelde vragen

Moet ik VSync altijd inschakelen in mobiele games?

Nee. In dynamische games (shooters, vechtspellen) vergroot VSync de input lag zonder significant voordeel — tearing op mobiele OLED-schermen is minder zichtbaar vanwege het kleine formaat van het beeldscherm. Voor casual games en UI verbetert VSync de perceptie van vloeiendheid.

Hoe beïnvloedt VSync de batterij van een mobiel apparaat?

VSync vermindert energieverbruik, omdat de GPU geen onnodige frames rendert. Met VSync uitgeschakeld werkt de GPU op maximale frequentie en verspilt elk niet-weergegeven frame energie en verhit het apparaat zonder voordeel voor de gebruiker.

Wat is het verschil tussen VSync en een FPS-begrenzer?

VSync synchroniseert de frame-output met de VBlank van het beeldscherm, terwijl een FPS-begrenzer simpelweg de renderfrequentie in de applicatiecode beperkt. Een FPS-begrenzer elimineert tearing niet, maar biedt voorspelbare vertraging zonder koppeling aan de verversingsfrequentie van het scherm.

Waarom kan de FPS met VSync halveren?

Wanneer de GPU een frame niet voor VBlank kan voltooien, wordt VBlank overgeslagen en wordt het frame gedurende twee verversingscycli weergegeven. Bij 60 Hz geeft dit 30 FPS. Drievoudige buffering verzacht dit effect doordat de GPU het volgende frame kan beginnen zonder te wachten.

Ondersteunen iOS en Android Adaptive Sync?

Ja. iOS ProMotion (iPad Pro, iPhone 13 Pro+) ondersteunt dynamische frequentie 24–120 Hz. Android via LTPO-panelen ondersteunt 1–120 Hz. De ontwikkelaar hoeft dit niet handmatig te beheren — het systeem kiest automatisch de optimale frequentie.

Samenvatting

  • VSync — mechanisme dat de GPU synchroniseert met het beeldscherm, waardoor screen tearing wordt geëlimineerd
  • Dubbele buffering met wachten op VBlank — klassieke implementatie van verticale synchronisatie
  • Screen tearing — het grootste probleem van uitgeschakelde VSync, vooral merkbaar bij hoge FPS
  • Input lag — de prijs voor VSync, die één tot twee frames vertraging toevoegt
  • Drievoudige buffering vermindert stotteren, maar vergroot input lag
  • Adaptive Sync (ProMotion, LTPO) — moderne vervanging voor VSync met dynamische verversingsfrequentie
  • Gebruik voor mobiele games een FPS-begrenzer in plaats van VSync voor voorspelbare vertraging

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook