¿Qué es un búfer de vértice OpenGL?

Un búfer de vértices de Open Graphics Library® (OpenGL®) es un área de la memoria de la computadora que a menudo se encuentra directamente en una tarjeta gráfica que permite un acceso muy rápido a una serie de vértices y sus propiedades. La mayoría de las veces, se utiliza un búfer de vértice OpenGL® para crear un objeto de búfer de vértice (VBO), lo que permite que los objetos dentro de una escena tridimensional (3D) se representen como parte de una lista de visualización y no en modo inmediato. Sin embargo, ocasionalmente, se puede usar un búfer de vértice fuera de un VBO para almacenar información sobre un objeto o para ayudar a facilitar las transformaciones en modelos complejos. Cabe señalar que un búfer de vértice no tiene que estar ubicado en la memoria de la tarjeta gráfica, ya que puede asignarse como cualquier estructura de datos. Si el búfer de vértice de OpenGL® se va a utilizar como parte de un VBO, entonces la tarjeta gráfica que se está utilizando debe admitir la extensión especial de OpenGL® VBO para garantizar que el búfer se coloque en la memoria de gráficos.

En el nivel más básico, un búfer de vértice OpenGL® es simplemente un búfer simple, un área asignada de memoria en la que se pueden almacenar datos. Se convierte en un búfer de vértices cuando se almacena una matriz de vértices en su interior. Una matriz de vértices OpenGL® es una matriz de estructuras de datos que define todas las propiedades de los vértices individuales. Esta información puede incluir las ubicaciones X, Y y Z del vértice en la escena 3D, el color del vértice, la normal y otras propiedades.

En el renderizado en modo inmediato, los comandos de OpenGL® se ejecutan directamente a medida que se llaman desde un programa. En estos casos no es necesario tener una matriz de vértices, porque los comandos para colocar y dibujar un vértice se pueden dar directamente al hardware, aunque esto puede causar serios problemas de rendimiento. Para el renderizado en modo no inmediato, la información sobre un objeto o modelo 3D debe colocarse primero en una matriz de vértices para que tenga una estructura que OpenGL® pueda interpretar fácilmente; esa matriz debe almacenarse en un área especial de memoria conocida como búfer de vértices OpenGL®.

Por sí mismo, el búfer de vértice no tiene necesariamente ningún atributo especial que no sea una colección completa de información utilizada para dibujar un objeto. Sin embargo, cuando el búfer de vértice de OpenGL® se convierte en un objeto de búfer de vértice de OpenGL® a través de la extensión OpenGL, se produce una secuencia especial de eventos para ayudar a optimizar el dibujo del objeto definido en el búfer de vértice. Es decir, el búfer se asigna y almacena en la memoria de la tarjeta gráfica, en el lado del servidor de la configuración cliente-servidor que usa OpenGL®. Algunos cálculos también se pueden realizar por adelantado en el VBO para que se pueda procesar lo más rápido posible. Fuera de un VBO, un búfer de vértice simple no suele recibir este tratamiento y puede asignarse y utilizarse como cualquier otro tipo de datos.