¿Qué son los búferes OpenGL?

Los búferes OpenGL® son áreas en la memoria de la computadora que se utilizan para almacenar secuencias de información, de modo que se pueda acceder a ellas de manera rápida y sencilla sin la necesidad de volver a calcular los datos cada vez. Aunque, como en la programación informática normal, los búferes de OpenGL® son básicamente bloques consecutivos de memoria de computadora asignada, OpenGL® en realidad estructura los búferes dentro de un programa definiendo qué tipo de información se mantendrá dentro del búfer para que se puedan utilizar ciertas optimizaciones. Hay varios tipos de búferes OpenGL®, incluidos búfer de fotogramas, búfer de píxeles y búfer de vértice, por nombrar solo algunos. Una de las características importantes de los búferes en OpenGL® es que se pueden almacenar en áreas de la memoria donde el acceso a la información dentro del búfer puede ser más rápido de lo normal. La cantidad de uso previsto para un búfer OpenGL® puede ayudar a determinar dónde se almacena realmente el búfer, con el uso definido al declarar el búfer como estático, dinámico o de flujo.

Una de las ventajas de utilizar búferes OpenGL® es que pueden ubicarse en una memoria a la que se accede muy rápidamente. Los tipos importantes de búferes, como los búferes de fotogramas, se pueden colocar directamente en la memoria de la tarjeta gráfica que se está utilizando. Esto significa que la información se puede pasar directamente desde el búfer a la unidad de procesamiento de gráficos (GPU) sin tener que viajar de una placa de hardware física a otra. Mover información sin procesar, como una pantalla pre-renderizada dentro de un framebuffer, a otra ubicación de memoria sin ningún tipo de procesamiento es una técnica conocida como blitting, y es una de las formas más rápidas de mover información en la memoria.

Hay varios tipos de búferes OpenGL®, aunque cada uno es realmente un bloque de memoria. Uno de los más utilizados se llama framebuffer. Un framebuffer contiene la información necesaria para mostrar el marco actual en el dispositivo de visualización. La información dentro de un framebuffer se ordena de la misma manera que la memoria utilizada para controlar lo que muestra el monitor. Esto significa que, si un framebuffer está ubicado en una tarjeta gráfica, entonces la imagen se puede enviar a la pantalla casi instantáneamente, aunque lleva tiempo procesar la escena en el buffer primero.

Otros tipos de búfer de OpenGL®, como un búfer de vértice, pueden contener secuencias completas de información. Estos tipos de búferes se utilizan para mantener bloques secuenciales de información a los que podría ser necesario acceder o cambiar muchas veces por segundo. Además, los propios búferes de OpenGL® a menudo se pueden pasar como argumentos a funciones que pueden aprovechar el estado ordenado del búfer y realizar cálculos muy rápidamente.