¿Qué es un OpenGL VBO?

Cuando se utilizan las bibliotecas de gráficos de computadora Open Graphics Library® (OpenGL®) para la programación de computadoras, un objeto de búfer de vértice (VBO) es una estructura de datos que permite construir y almacenar un objeto tridimensional (3D) en la memoria de los gráficos. tarjeta o hardware de gráficos. Esto permite renderizar un OpenGL® VBO muy rápidamente y utilizar muchos menos recursos del sistema que otras técnicas que utilizan el dibujo en modo inmediato. Además de las ganancias en velocidad y la reducción de la sobrecarga de gráficos, un OpenGL® VBO también es una estructura de datos dinámica, a diferencia de una lista de visualización OpenGL®, que se puede cambiar una vez que está en la memoria. El concepto de OpenGL® VBO en realidad comenzó con los fabricantes de hardware que originalmente incluían, con diferentes nombres, un tipo similar de funcionalidad como una extensión de las bibliotecas OpenGL® que luego fue estandarizada por OpenGL® Architecture Review Board (ARB).

Un VBO OpenGL® es básicamente una combinación de otros dos tipos de estructuras de datos OpenGL®. Abarca la funcionalidad básica de una matriz de vértices, porque la información de la geometría, incluidas las coordenadas del vértice, las normales y el color, se puede almacenar en una matriz estructurada que se puede pasar a OpenGL® para su procesamiento. Sin embargo, a diferencia de una matriz de vértices, un VBO OpenGL® se almacena en el lado del servidor del renderizador y no necesita acceder constantemente al lado del cliente para obtener la información del vértice.

Al permitir que el VBO se almacene en la memoria gráfica, también adquiere algunas de las propiedades de una lista de visualización. La principal diferencia es que un OpenGL® VBO se puede modificar y una lista de visualización no. Además, el VBO no se copia necesariamente en la memoria gráfica como lo haría una lista de visualización, por lo que solo una estructura de datos debe estar presente en la memoria.

Cuando finalmente se renderiza un VBO OpenGL®, la distancia desde la memoria de gráficos en la que está almacenado y la unidad de procesamiento de gráficos (GPU) es muy pequeña, lo que permite una rasterización muy rápida sin la necesidad de pasar primero por un hardware de sistema más lento. En algunos casos, sin embargo, el hardware de la tarjeta gráfica no admite el uso de VBO. Esto puede llevar a problemas de programación que eliminan cualquier beneficio adicional del uso de un VBO o un programa que será incompatible con algunas tarjetas gráficas.

Existen algunos métodos que pueden ayudar a optimizar la forma en que se trata un VBO OpenGL® cuando se utiliza. Uno de ellos es proporcionar pistas a la tarjeta gráfica, oa OpenGL®, para ayudar a determinar dónde debe ubicarse el VBO en la memoria. Dependiendo de las sugerencias proporcionadas, el VBO puede almacenarse directamente en la memoria gráfica de la tarjeta gráfica, o puede almacenarse en la memoria principal de acceso aleatorio (RAM) del sistema, si se considera necesario.