VSync — qué es, cómo funciona y configuración

Autor: IT Sectr Publicado: 2026-04-01 Tiempo de lectura: 8 min

VSync (Vertical Synchronization) es una tecnología que sincroniza la salida de cada nuevo fotograma de la GPU con la frecuencia de actualización de la pantalla, eliminando roturas de imagen. Según Apple Metal Documentation, la sincronización con VBlank es obligatoria para un renderizado fluido en dispositivos móviles. Screen tearing ocurre cuando un fotograma se actualiza durante el barrido vertical, y VSync evita esta mezcla.

Puntos clave

  • VSync es un mecanismo de sincronización GPU-pantalla que espera VBlank
  • Screen tearing es una rotura visible de imagen cuando el fotograma cambia a mitad del barrido
  • Doble búfer es el método principal de implementación de VSync con front buffer y back buffer
  • Input lag es un efecto secundario de VSync que aumenta el retardo entre la acción del usuario y la visualización
  • Sincronización adaptativa es una alternativa moderna a VSync que elimina sus inconvenientes

Qué es VSync

VSync (Vertical Synchronization) es un mecanismo hardware-software que obliga a la GPU a esperar la señal de blanking vertical (VBlank) antes de mostrar un nuevo fotograma. Sin VSync, la GPU puede enviar fotogramas en cualquier momento, incluso cuando la pantalla está en medio de dibujar el fotograma actual, lo que provoca rotura de imagen a lo largo de una línea horizontal.

En dispositivos móviles, VSync se implementa a nivel del controlador gráfico y del sistema operativo. iOS usa sincronización VBlank a través de Metal, Android a través de SurfaceFlinger y BufferQueue. Con la sincronización vertical activada, los FPS de la aplicación no pueden superar la frecuencia de actualización de la pantalla: 60, 90 o 120 Hz según el modelo del dispositivo.

El término sincronización vertical proviene del principio de funcionamiento de los monitores CRT, donde un haz de electrones dibujaba la imagen línea por línea de arriba abajo. Tras completar un fotograma, el haz volvía a la esquina superior izquierda — este momento se llamaba blanking vertical. Los modernos LCD y OLED han conservado este término, aunque físicamente funcionan de manera diferente.

Cómo funciona la sincronización vertical

La GPU renderiza fotogramas en el back buffer, mientras que la pantalla lee del front buffer. VSync garantiza que el intercambio de búferes (swap) ocurra solo durante VBlank — cuando la pantalla ha terminado de mostrar el fotograma actual y está lista para el siguiente. Este mecanismo se llama doble búfer con sincronización VBlank.

Mecanismo de doble búfer

El doble búfer usa dos búferes: un front buffer mostrado en pantalla y un back buffer en el que la GPU escribe el fotograma actual. Cuando el fotograma está listo, los búferes se intercambian. Con VSync activado, este intercambio se pospone hasta el VBlank más cercano. La GPU permanece inactiva si el fotograma está listo antes de VBlank, reduciendo el rendimiento pero eliminando el tearing.

cpp
// OpenGL — activación de VSync mediante WGL_EXT_swap_control
HDC hdc = wglGetCurrentDC();
PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT =
    reinterpret_cast<PFNWGLSWAPINTERVALEXTPROC>(
        wglGetProcAddress("wglSwapIntervalEXT"));
wglSwapIntervalEXT(1); // 1 = VSync activado, 0 = desactivado

Tiempo de espera VBlank

VBlank es un intervalo corto entre la última línea del fotograma actual y la primera línea del siguiente. Durante este momento, la pantalla no actualiza píxeles y el intercambio de búferes ocurre sin artefactos. La duración de VBlank depende de la frecuencia de actualización: a 60 Hz en una pantalla 1080p, VBlank dura aproximadamente 1.4 ms. Si la GPU no completa el renderizado antes de VBlank, el fotograma se salta y la pantalla muestra el fotograma anterior por otro ciclo — esto se percibe como tartamudeo.

El triple búfer resuelve el problema de inactividad de la GPU añadiendo un tercer búfer. La GPU puede empezar a renderizar el siguiente fotograma inmediatamente incluso si uno de los back buffers está esperando VBlank. Esto aumenta los FPS con VSync pero añade un fotograma extra de latencia. En dispositivos móviles, el triple búfer se usa en algunos motores de juegos y en Vulkan mediante el modo Mailbox.

Principales problemas sin VSync

VSync desactivado proporciona el máximo FPS y el mínimo input lag, pero a costa de artefactos visuales. Para juegos móviles y aplicaciones con animación fluida, la elección entre VSync y su desactivación es un compromiso entre claridad de imagen y capacidad de respuesta del control.

Rotura de fotograma (Screen Tearing)

Screen tearing es una rotura horizontal donde la parte superior de la pantalla muestra el fotograma anterior y la inferior ya muestra el siguiente. Esto ocurre cuando la GPU intercambia búferes a mitad del barrido. En dispositivos móviles, el tearing es especialmente notable durante el desplazamiento rápido o en escenas dinámicas con altas frecuencias de fotogramas. Las pantallas OLED con su respuesta instantánea hacen que el tearing sea más contrastado en comparación con LCD.

La intensidad del tearing depende de la relación entre FPS y frecuencia de actualización. A 60 FPS en una pantalla de 60 Hz, el tearing aparece como una línea estática única, mientras que a 300 FPS en 60 Hz aparecen múltiples roturas onduladas que se mueven de arriba abajo. Cuanto mayor es el FPS respecto a la frecuencia de actualización, más roturas y más visibles son.

Latencia de entrada (Input Lag)

El input lag con VSync es el retardo entre pulsar un botón y ver el resultado en pantalla. La sincronización vertical añade de media un fotograma de latencia (16.7 ms a 60 Hz), y con triple búfer — hasta dos fotogramas. Para aplicaciones casuales, este retardo es imperceptible, pero para shooters, juegos de lucha y juegos de ritmo es crítico: los profesionales notan retardos incluso de 8 ms.

Según una investigación de NVIDIA (2024), el input lag medio en CS:GO a 60 FPS sin VSync es de 22 ms, y con VSync — 39 ms. A 144 FPS, la diferencia se reduce a 14 frente a 18 ms respectivamente. En plataformas móviles, el input lag de VSync es menos crítico debido a la entrada táctil, donde la latencia hardware de la pantalla táctil (10–30 ms) enmascara el retardo adicional de sincronización.

Configuración de VSync en desarrollo móvil

En el desarrollo móvil, VSync se controla a través de APIs gráficas, motores de juegos y ajustes del sistema operativo. iOS proporciona menos control, Android ofrece más a través de Vulkan y OpenGL ES. La elección del modo depende del tipo de aplicación: juegos, UI o vídeo.

VSync en Unity y Unreal Engine

Unity usa el ajuste QualitySettings.vSyncCount: 0 — desactivado, 1 — VSync en cada VBlank, 2 — en cada segundo VBlank (FPS reducido a la mitad). En Unreal Engine, VSync se controla mediante el comando de consola r.VSync y DefaultEngine.ini. Para compilaciones móviles, se recomienda desactivar VSync en Unity y usar un limitador de FPS propio, ya que el VSync integrado en Android SurfaceFlinger puede crear retardos impredecibles.

csharp
// Unity — control de VSync y FPS
void Awake()
{
    // 0 = VSync desactivado, 1 = VSync activado
    QualitySettings.vSyncCount = 0;
    // Limitador de FPS personalizado en lugar de VSync
    Application.targetFrameRate = 60;
}

VSync en Vulkan y Metal

Vulkan proporciona control total a través de VkSwapchainPresentInfo y presentMode: VK_PRESENT_MODE_FIFO_KHR — VSync clásico, VK_PRESENT_MODE_MAILBOX_KHR — triple búfer sin espera, VK_PRESENT_MODE_IMMEDIATE_KHR — sin sincronización. Metal en iOS controla VSync mediante CAMetalLayer.displaySyncEnabled. A partir de iOS 14, Apple recomienda usar displaySyncEnabled = true por defecto para todas las aplicaciones excepto juegos de control arcade.

ModoDescripciónLatencia
FIFOVSync clásico con espera VBlank1 fotograma
MailboxTriple búfer, descartando fotogramas antiguos1–2 fotogramas
ImmediateSin sincronización, máximo FPS0 fotogramas

Limitación de FPS sin VSync

Un limitador de FPS es una alternativa a VSync donde la aplicación limita la frecuencia de fotogramas mediante software sin esperar VBlank. Este enfoque proporciona una latencia predecible y no depende de la frecuencia de actualización de la pantalla. En Android, la limitación de FPS se implementa mediante Choreographer, en iOS — mediante CADisplayLink con control manual del tiempo de salida.

VSync y tecnologías modernas de sincronización

El VSync tradicional tiene un inconveniente fundamental: está ligado a una frecuencia de actualización fija de la pantalla. Si la GPU produce 45 FPS en una pantalla de 60 Hz, VSync no puede mostrar 45 fotogramas — muestra 30 (saltándose cada segundo VBlank) o alterna entre 60 y 30 con intervalos irregulares. Esto crea tartamudeo, que estropea la experiencia de juego más que el tearing.

Adaptive Sync (FreeSync, G-Sync, Apple ProMotion) resuelve este problema cambiando dinámicamente la frecuencia de actualización de la pantalla según los FPS de la aplicación. Si la aplicación produce 47 FPS, la pantalla cambia a 47 Hz — cada fotograma se muestra exactamente una vez, sin roturas ni tartamudeo. ProMotion en iOS selecciona automáticamente una frecuencia de 24 a 120 Hz, equilibrando la fluidez y el consumo de energía.

En dispositivos móviles, Adaptive Sync se está convirtiendo en el estándar: iPad Pro (2017+) con ProMotion, dispositivos Android emblemáticos con pantallas LTPO (Samsung Galaxy S23 Ultra, Google Pixel 8 Pro) soportan frecuencias de actualización dinámicas de 1 a 120 Hz. Para el desarrollador, esto significa que VSync en el sentido tradicional se reemplaza por la gestión del sistema — basta con establecer targetFrameRate, y el propio SO ajusta la frecuencia de actualización para el equilibrio óptimo entre fluidez y duración de la batería.

Preguntas frecuentes

¿Siempre hay que activar VSync en juegos móviles?

No. Para juegos dinámicos (shooters, juegos de lucha), VSync aumenta el input lag sin beneficio significativo — el tearing en pantallas OLED móviles es menos notable debido al pequeño tamaño de la pantalla. Para juegos casuales e interfaces de usuario, VSync mejora la percepción de fluidez.

¿Cómo afecta VSync a la batería del dispositivo móvil?

VSync reduce el consumo de energía porque la GPU no renderiza fotogramas innecesarios. Con VSync desactivado, la GPU funciona a máxima frecuencia, y cada fotograma no mostrado gasta energía y calienta el dispositivo sin beneficio para el usuario.

¿Cuál es la diferencia entre VSync y un limitador de FPS?

VSync sincroniza la salida de fotogramas con el VBlank de la pantalla, mientras que un limitador de FPS simplemente limita la frecuencia de renderizado en el código de la aplicación. El limitador de FPS no elimina el tearing pero proporciona una latencia predecible sin estar ligado a la frecuencia de actualización de la pantalla.

¿Por qué los FPS pueden caer a la mitad con VSync activado?

Cuando la GPU no completa un fotograma antes de VBlank, el VBlank se salta y el fotograma se muestra durante dos ciclos de actualización. A 60 Hz, esto produce 30 FPS. El triple búfer mitiga este efecto permitiendo a la GPU empezar el siguiente fotograma sin esperar.

¿Soportan iOS y Android Adaptive Sync?

. iOS ProMotion (iPad Pro, iPhone 13 Pro+) soporta frecuencia dinámica 24–120 Hz. Android mediante pantallas LTPO soporta 1–120 Hz. El desarrollador no necesita gestionar esto manualmente — el sistema selecciona la frecuencia óptima automáticamente.

Resumen

  • VSync es un mecanismo de sincronización GPU-pantalla que elimina el screen tearing
  • Doble búfer con espera VBlank es la implementación clásica de la sincronización vertical
  • Screen tearing es el principal problema de VSync desactivado, especialmente notable con FPS altos
  • Input lag es el precio de VSync, añadiendo de uno a dos fotogramas de retardo
  • Triple búfer reduce el tartamudeo pero aumenta el input lag
  • Adaptive Sync (ProMotion, LTPO) es un reemplazo moderno de VSync con frecuencia dinámica
  • Para juegos móviles, usa un limitador de FPS en lugar de VSync para una latencia predecible

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también