En gráficos por computadora , una cadena de intercambio (también llamada swapchain ) es una serie de búferes de fotogramas virtuales que la tarjeta gráfica y la API gráfica utilizan para estabilizar la velocidad de fotogramas , reducir el tartamudeo y para otros fines. Debido a estas ventajas, muchas API gráficas requieren el uso de una cadena de intercambio. La cadena de intercambio generalmente reside en la memoria gráfica , pero también puede residir en la memoria del sistema. Una cadena de intercambio con dos búferes es un tipo de 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 que se renderiza en la salida de la tarjeta de vídeo . Los búferes restantes se conocen como búferes de respaldo. Cada vez que se muestra un nuevo fotograma , el primer búfer de respaldo de la cadena de intercambio reemplaza al búfer de pantalla; esto se denomina presentación o intercambio . Se pueden realizar diversas acciones sobre el búfer de pantalla anterior y otros búferes de respaldo (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 que se realiza la decide la aplicación cliente y depende de la API.
Direct3D
Microsoft Direct3D implementa una clase SwapChain. Cada dispositivo host tiene asignada al menos una cadena de intercambio, 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 en voltear, el búfer de pantalla se copia en el último búfer de fondo, y luego todos los búferes de fondo existentes se copian hacia adelante en la cadena. Cuando se configura copiar, cada búfer de fondo se copia hacia adelante, pero el búfer de pantalla no se ajusta al último búfer, dejándolo sin cambios. Voltear no funciona cuando solo hay un búfer de fondo, ya que el búfer de pantalla se copia sobre el único búfer de fondo antes de que pueda presentarse. En el modo descartar, el controlador selecciona el mejor método. [ 2 ]
Comparación con el triple búfer
Fuera del contexto de Direct3D, el triple búfer se refiere a la técnica que permite a una aplicación dibujar en el búfer de respaldo que se actualizó menos recientemente. Esto permite que la aplicación continúe siempre con la renderización, independientemente de la velocidad a la que se dibujan los fotogramas o se envían a la pantalla. El triple búfer puede provocar que un fotograma se descarte sin mostrarse si dos o más fotogramas más recientes se renderizan completamente 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 fotograma que dibuja la aplicación se mostrará incluso si hay fotogramas más recientes disponibles. Direct3D no implementa una estrategia de intercambio de búfer más reciente, y la documentación de Microsoft denomina a una cadena de intercambio de Direct3D de tres búferes "triple búfer". El triple búfer, como se describió anteriormente, es superior para fines interactivos como los videojuegos, pero las cadenas de intercambio de Direct3D de más de tres búferes pueden ser mejores para tareas como la presentación de fotogramas de un vídeo, donde el tiempo necesario para decodificar cada fotograma puede ser muy variable. [ 3 ]
Referencias
- Gráficos por computadora