Cadenas de intercambio

Una cadena de intercambio es una colección de búferes que se usan para mostrar fotogramas al usuario. Cada vez que una aplicación presenta un nuevo marco para su presentación, el primer búfer de la cadena de intercambio tiene lugar del búfer mostrado. Este proceso se denomina intercambio o volteo.

Un adaptador de gráficos contiene un puntero a una superficie que representa la imagen que se muestra en el monitor, denominada búfer frontal. A medida que se actualiza el monitor, la tarjeta gráfica envía el contenido del búfer frontal al monitor que se va a mostrar. Sin embargo, esto provoca un problema de "desgarro" al representar gráficos en tiempo real. El corazón del problema es que las velocidades de actualización del monitor son muy lentas en comparación con el resto del equipo. Las frecuencias de actualización comunes oscilan entre 60 Hz (60 veces por segundo) y 100 Hz.

Si la aplicación está actualizando el búfer frontal mientras el monitor está en medio de una actualización, la imagen que se muestra se cortará a la mitad con la mitad superior de la pantalla que contiene la imagen antigua y la mitad inferior que contiene la nueva imagen. Este problema se conoce como desgarro.

Evitar la desgarro

Direct3D implementa dos opciones para evitar el desgarro:

  • Una opción para permitir solo las actualizaciones del monitor en la operación de retroceso vertical (o sincronización vertical). Normalmente, un monitor actualiza su imagen moviendo un pin claro horizontalmente, zigzagging desde la parte superior izquierda del monitor y finalizando en la parte inferior derecha. Cuando el pin de luz llega a la parte inferior, el monitor vuelve a almacenar el pin de luz moviendolo de vuelta a la parte superior izquierda para que el proceso pueda empezar de nuevo.

    Esta recalibración se denomina sincronización vertical. Durante una sincronización vertical, el monitor no dibuja nada, por lo que no se verá ninguna actualización al búfer frontal hasta que el monitor empiece a dibujarse de nuevo. La sincronización vertical es relativamente lenta; sin embargo, no es lo suficientemente lento como para representar una escena compleja mientras espera. Lo que es necesario para evitar el desgarro y poder representar escenas complejas es un proceso denominado almacenamiento en búfer de reserva.

  • Una opción para usar una técnica denominada almacenamiento en búfer de reserva. El almacenamiento en búfer de reserva es el proceso de dibujar una escena en una superficie fuera de la pantalla, denominada búfer de reserva. Cualquier superficie que no sea el búfer frontal se denomina superficie fuera de la pantalla porque el monitor nunca la ve directamente.

    Mediante el uso de un búfer de reserva, una aplicación tiene la libertad de representar una escena cada vez que el sistema está inactivo (es decir, no hay mensajes de Windows en espera) sin tener que tener en cuenta la frecuencia de actualización del monitor. El almacenamiento en búfer de reserva conlleva una complicacion adicional de cómo y cuándo mover el búfer de reserva al búfer frontal.

Volteo de superficie

El proceso de mover el búfer de reserva al búfer frontal se denomina volteo de superficie. Dado que la tarjeta gráfica simplemente usa un puntero a una superficie para representar el búfer frontal, un cambio de puntero simple es todo lo que se necesita para establecer el búfer de reserva en el búfer frontal. Cuando una aplicación pide a Direct3D que presente el búfer atrás en el búfer frontal, Direct3D simplemente "voltea" los dos punteros de superficie. El resultado es que el búfer atrás es ahora el nuevo búfer frontal y el búfer frontal antiguo es el nuevo búfer de reserva.

Se invoca un volteo de superficie cada vez que una aplicación pide al dispositivo Direct3D que presente el búfer de reserva; Sin embargo, Direct3D se puede configurar para poner en cola las solicitudes hasta que se produzca una sincronización vertical. Esta opción se conoce como el intervalo de presentación del dispositivo Direct3D. Es posible que los datos del nuevo búfer atrás no sean reutilizables, en función de cómo una aplicación especifique cómo Direct3D debe controlar el volteo de superficie.

El volteo de Superficie es clave en el software multimedia, de animación y de juego; es equivalente a la forma en que puedes hacer animación con un panel de papel. En cada página, el artista cambia ligeramente las figuras, de modo que cuando se voltea rápidamente entre hojas, el dibujo aparece animado.

Dispositivos