KailKatarn escribió:Alguien sabe algo más del VSYNC ?
El vsync es el sincronismo vertical. Al generar una imagen en una tarjeta se carga en el framebuffer. En él se almacena la información de color de cada pixel.
Para dibujar la imagen el monitor (supongamos CRT) dispara un haz de un electron (tres para el color) a una posición e intensidad determinada para generar la gama de colores. Eso impacta en la parte posterior de la pantalla y excita una sustancia fosforescente (no se si es fósforo o algún compuesto) que emite la luz que vemos y que percibimos como color.
El problema es que ese estado de excitabilidad dura MUY poco, por tanto lo que hace es hacer varias pasadas por toda la pantalla (y por todos sus píxeles) continuamente de forma muy rápida para que parezca que la pantalla nunca se apaga.
Pues bien, el movimiento que hace el electron es de izquierda a derecha y de arriba a abajo. El problema viene cuando el electrón finaliza una línea, que tiene que "moverse" hacia el otro extremo de la pantalla, lo que dura un brevísimo (e inapreciable lapso de tiempo) que es el HSYNC. El VSYNC es parecido, cuando llega a la parte inferior derecha de la pantalla, el electrón ha de reposicionarse en la esquina izquierda, lo que lleva algo de tiempo, mayor que el HSYNC, pero inapreciable también.
Sin embargo para un ordenador estos "saltos" son muy apreciables, y muy últiles.
Como nota aclaratoria, esto si mal no recuerdo también existe en los TFTs por esa razón. Es decir, existen VSYNCs en los TFTs aunque en realidad no hay redibujado de pantalla por ningún electrón, y por tanto no es necesario para el redibujado físico. Sin embargo es muy util para sincronizar como veremos ahora mismo.
Volvamos al framebuffer, donde está guardada la imagen que va a ser mostrada en pantalla. Supongamos que podemos generar 80 FPS pero nuestro monitor sólo refresca 60 veces por segundo. Lo que va a ocurrir es que más o menos cuando el electrón redibuje una pantalla y cuarto, los datos del framebuffer cambiarán al siguiente frame, porque la tarjeta gráfica lo habrá terminado de dibujar. ¿Y cual es el problema? Que hemos dibujado un cuarto de pantalla con la imagen de un frame, y el resto de la pantalla con la imagen del siguiente. En inglés se llama tearing, y es como si la imagen parpadeara.
El VSYNC activado lo que hace es sincronizar el cambio de frame cuando se produce el reposicionamiento del electrón. En ese breve período, el electrón no dibuja nada en la pantalla, por tanto si cambiamos los contenidos del frontbuffer antes de que comience a dibujar todos los frames, y sólo permitimos esos cambios en ese momento, la imagen aparecerá perfectamente dibujada y por tanto ganaremos en calidad.
Como en nuestro caso la tarjeta dibujará más frames de los que podemos mostrar en pantalla, algunos se perderán y no se mostrarán nunca, por eso da igual el número de frames por encima de la tasa de refresco del monitor si está activado el VSYNC.
Pues eso es el VSYNC
Espero que me haya explicado bien.