stringtranslate.com

cadena de intercambio

En gráficos por computadora , una cadena de intercambio (también swapchain ) es una serie de framebuffers virtuales utilizados por la tarjeta gráfica y la API de gráficos para estabilizar la velocidad de cuadros , reducir la tartamudez y varios otros propósitos. Debido a estos beneficios, muchas API de gráficos requieren el uso de una cadena de intercambio. La cadena de intercambio suele existir en la memoria de gráficos , pero también puede existir en la memoria del sistema. Una cadena de intercambio con dos buffers es un buffer doble .

Función

Cadena de intercambio
Una representación gráfica de una cadena de intercambio con triple buffer.

En cada cadena de intercambio hay al menos dos buffers. El primer framebuffer, el screenbuffer, es el buffer que se procesa en la salida de la tarjeta de video . Los buffers restantes se conocen como backbuffers. Cada vez que se muestra un nuevo fotograma , el primer backbuffer de la cadena de intercambio ocupa el lugar del screenbuffer, esto se denomina presentación o intercambio . Se pueden realizar una variedad de otras acciones en el buffer de pantalla anterior y otros buffers de retroceso (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.

directo3D

Microsoft Direct3D implementa una clase SwapChain. Cada dispositivo host 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 de respaldo, luego todos los búfer de respaldo existentes se copian hacia adelante en la cadena. Cuando se configura la copia, cada backbuffer se copia hacia adelante, pero el screenbuffer no se ajusta al último buffer, dejándolo sin cambios. Voltear no funciona cuando solo hay un backbuffer, ya que el screenbuffer se copia sobre el único backbuffer antes de poder presentarse. En el modo de descarte, el conductor selecciona el mejor método. [2]

Comparación con triple buffering

Fuera del contexto de Direct3D, el almacenamiento en búfer triple se refiere a la técnica de permitir que una aplicación recurra al búfer posterior que se haya actualizado menos recientemente. Esto permite que la aplicación continúe 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 provocar 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 fotograma dibujado por la aplicación se mostrará incluso si hay fotogramas 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 "triple almacenamiento en búfer". El almacenamiento en búfer triple, como se describe anteriormente, es superior para fines 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

  1. ^ "Clase de cadena de intercambio". Microsoft . Consultado el 30 de octubre de 2009 .
  2. ^ "Cambiar cadenas". neXe . Consultado el 16 de mayo de 2015 .
  3. ^ "Triple almacenamiento en búfer: por qué nos encanta". AnandTech . Consultado el 27 de mayo de 2014 .