¿Qué es el ajuste "Usar VBOs"?

En la instantánea 14w29b hay una nueva opción en el menú "Configuración de vídeo" llamada "Usar VBOs":

La actualización de la instantánea dice que la activación de "Vertex Buffer Objects" debería aumentar su FPS en un 5% a 10% en promedio.

Estoy buscando una explicación sencilla de lo que hacen los VBOs visualmente y cómo funcionan.

Solución

La respuesta proporcionada por Flaunting es correcta, pero en caso de que alguien esté interesado en por qué puede ser más eficiente, aquí hay una explicación.

En el modo inmediato (creo que es el caso por defecto en minecraft) cuando se quiere renderizar digamos un cuadrado:

En cada fotograma se emitirían los siguientes comandos (en pseudocódigo)

begin drawing
draw line from (0,0) to (1,0)
draw line from (1,0) to (1,1)
draw line from (1,1) to (0,1)
draw line from (0,1) to (0,0)
end drawing

Para un cuadrado, esto no es mucho, pero podría haber millones de vértices en una escena, y pueden tener más atributos (color, normal, etc.). Esto es un montón de datos para enviar a la GPU en cada fotograma.

Usando VBOS, cargarías todos los datos de los vértices en la memoria de la GPU al principio. El pseudocódigo podría ser así:

create VBO
load (0,0) into VBO
load (1,0) into VBO
load (1,1) into VBO
load (0,1) into VBO
load (0,0) into VBO

El código OpenGL te devolverá un "nombre" para este VBO (un entero sin signo distinto de cero, creo). Entonces puedes hacer referencia a esto cuando quieras dibujar el cuadrado. Así, en cada fotograma, sólo tienes que emitir un comando de dibujo:

draw vertices in VBO

Puede que tengas que configurar el estado de dibujo para que utilice pares de vértices para las líneas, pero por cada VBO adicional, sólo necesitas una llamada de dibujo extra. De hecho, para la geometría de nivel estático (probablemente no es aplicable en el caso de minecraft) puede combinar todos estos vértices en un VBO masiva, si usted tiene suficiente memoria de la GPU.

Me sorprende que el aumento de velocidad es sólo 5-10%. Esto es probablemente debido a la geometría de nivel dinámico.

Comentarios (6)

VBO son las siglas de Vertex Buffer Object

Del artículo de Wikipedia

Un Vertex Buffer Object (VBO) es una característica de OpenGL que proporciona métodos para cargar datos de vértices (posición, vector normal, color, etc.) al dispositivo de vídeo para el renderizado en modo no inmediato. Los VBOs ofrecen un aumento sustancial del rendimiento en comparación con el renderizado en modo inmediato, principalmente porque los datos residen en la memoria del dispositivo de vídeo en lugar de la memoria del sistema y, por tanto, pueden ser renderizados directamente por el dispositivo de vídeo.

En términos sencillos

En minecraft específicamente ofrece un aumento de rendimiento de ~10% cuando se establece en ON

Esto lo hace reduciendo la carga de trabajo en su CPU y memoria RAM y reasignándola a la memoria de su gpu, esto sólo se recomienda si usted tiene una tarjeta gráfica aceptable a decente

Comentarios (13)

Aumenta sustancialmente la velocidad al reducir la necesidad de trabajo de su procesador y de la memoria del sistema (RAM). En su lugar, utiliza la memoria de la tarjeta gráfica para aumentar el rendimiento.

Comentarios (0)