En gráficos por computadora , una cadena de intercambio es una serie de búferes de fotogramas virtuales utilizados por la tarjeta gráfica y la API de gráficos para estabilizar la velocidad de fotogramas y varias otras funciones. La cadena de intercambio suele existir en la memoria gráfica , pero también puede existir en la memoria del sistema. La no utilización de una cadena de intercambio puede resultar en una representación intermitente , pero muchas API de gráficos requieren su existencia y utilización. Una cadena de intercambio con dos búferes es un búfer doble .
Función
En cada cadena de intercambio hay al menos dos búferes. El primer búfer de fotogramas, el búfer de pantalla, es el búfer que se procesa en la salida de la tarjeta de video . Los búferes restantes se conocen como backbuffers. Cada vez que se muestra un nuevo marco , el primer búfer de retroceso en la cadena de intercambio ocupa el lugar del búfer de pantalla, esto se denomina presentación o intercambio . Se pueden realizar una variedad de otras acciones en el búfer de pantalla anterior y otros búferes anteriores (si existen). El búfer de pantalla puede simplemente sobrescribirse o devolverse al final de la cadena de intercambio para su posterior procesamiento. La acción realizada la decide la aplicación cliente y depende de la API.
Direct3D
Microsoft Direct3D implementa una clase SwapChain. Cada dispositivo anfitrión tiene al menos una cadena de intercambio asignada, y la aplicación cliente puede crear otras. [1] La API proporciona tres métodos de intercambio: copiar, descartar y voltear. Cuando SwapChain está configurado para voltear, el búfer de pantalla se copia en el último búfer posterior, luego todos los búferes anteriores existentes se copian hacia adelante en la cadena. Cuando se establece la copia, cada búfer se copia hacia adelante, pero el búfer de pantalla no se ajusta al último búfer, dejándolo sin cambios. Flip no funciona cuando solo hay un backbuffer, ya que el screenbuffer se copia en el único backbuffer antes de que se pueda presentar. En el modo de descarte, el controlador selecciona el mejor método. [2]
Comparación con el almacenamiento en búfer triple
Fuera del contexto de Direct3D, el almacenamiento en búfer triple se refiere a la técnica de permitir que una aplicación se dibuje en el búfer posterior que se haya actualizado menos recientemente. Esto permite que la aplicación proceda siempre con la renderización, independientemente del ritmo al que la aplicación dibuja los fotogramas o del ritmo al que se envían los fotogramas a la pantalla. El almacenamiento en búfer triple puede hacer que un fotograma se descarte sin mostrarse si dos o más fotogramas más nuevos se procesan por completo en el tiempo que tarda un fotograma en enviarse a la pantalla. Por el contrario, las cadenas de intercambio de Direct3D son una cola estricta de primero en entrar , primero en salir , por lo que cada cuadro que dibuja la aplicación se mostrará incluso si hay cuadros más nuevos disponibles. Direct3D no implementa una estrategia de intercambio de búfer más reciente, y la documentación de Microsoft llama a una cadena de intercambio de Direct3D de tres búferes "almacenamiento en búfer triple". El almacenamiento en búfer triple como se describe anteriormente es superior para propósitos interactivos como juegos, pero las cadenas de intercambio Direct3D de más de tres búferes pueden ser mejores para tareas como presentar cuadros de un video donde el tiempo necesario para decodificar cada cuadro puede ser muy variable. [3]
Referencias
- ^ "Clase SwapChain" . Microsoft . Consultado el 30 de octubre de 2009 .
- ^ "Cadenas de intercambio" . neXe . Consultado el 16 de mayo de 2015 .
- ^ "Triple búfer: por qué nos encanta" . AnandTech . Consultado el 27 de mayo de 2014 .