Take the 2-minute tour ×
Arqade is a question and answer site for passionate videogamers on all platforms. It's 100% free, no registration required.

In the 14w29b snapshot there is a new option in the "Video Settings" menu called "Use VBOs":

enter image description here

The snapshot update says that enabling "Vertex Buffer Objects" should increase your FPS by 5% to 10% on average.

I am looking for a simple explanation of what VBOs do visually and how they work.

share|improve this question

3 Answers 3

up vote 22 down vote accepted

The answer provided by Flaunting is correct, but in case anyone is interested why it might be more efficient, here is an explanation.

In immediate mode (I think this is the default case in minecraft) when you want to render say a square:

Unit square

You would issue the following commands each frame (in pseudo code)

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

For one square, this is not a lot, but there could be millions of vertices in a scene, and they may have more attributes (colour, normal etc.). This is a lot of data to send to the GPU each frame.

Using VBOS, you would load all of the vertex data into GPU memory at the start. Pseudo code might look like this:

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

The OpenGL code will give you back a 'name' for this VBO (a non-zero unsigned integer iirc). You can then reference this when you want to draw the square. So each frame, you only need to issue one draw command:

draw vertices in VBO

You may have to set up the drawing state so that it uses pairs of vertices for lines, but for each additional VBO, you only require one extra draw call. In fact, for static level geometry (probably not applicable in the case of minecraft) you can combine all of these vertices into one massive VBO, if you have enough GPU memory.

I'm surprised that the speed-up is only 5-10%. This is probably because of the dynamic level geometry.

share|improve this answer
3  
It might only be 5-10% because of the simplicity of Minecraft's models. Games with higher resolutions models would have a bigger gain. –  Corey Ogburn Jul 18 at 18:06
    
Thanks for a really great explanation! –  Caleb Jul 18 at 21:18
    
    
@CoreyOgburn Also likely because minecraft does a lot of CPU-side vertex work (when reconstructing meshes after cubes are removed/created/etc..) so the extra work associated with glBegin/glEnd has less of an impact. –  Thomas Jul 19 at 9:56
    
The fact that it only gives 5% - 10% improvement is probably implementation specific. (Minecraft isn't known for having a very good implementation of ... well, anything, really. -- But it continues to improve; VBOs and instancing have been around since at least OpenGL ~2.1 [2006~ish] for example, so there's hope...) –  BrainSlugs83 Oct 25 at 20:49

VBO stands for Vertex Buffer Object

From the Wikipedia article

A Vertex Buffer Object (VBO) is an OpenGL feature that provides methods for uploading vertex data (position, normal vector, color, etc.) to the video device for non-immediate-mode rendering. VBOs offer substantial performance gains over immediate mode rendering primarily because the data resides in the video device memory rather than the system memory and so it can be rendered directly by the video device.

In Simple Terms

In minecraft specifically it Offers a ~10% performance increase when set to ON

It does this by reducing the workload on your CPU & RAM and reassigning it to your gpu memory, this is only recommended if you have an okay to decent graphics card

share|improve this answer
    
I noticed that you have simply copied the first paragraph of the "Vertical Buffer Object" article on Wikipedia. As for the 10% increase of performance, where are your sources, and what do you mean by performance? Framerate? CPU Usage? –  Caleb Jul 18 at 9:37
1  
that is what VBO does, as for the 10% increase that is taken from the snapshot update notes. –  Flaunting Jul 18 at 9:38
    
RAM Usage if you read what i posted it says it reassigns it to gpu memory easing the load on other resources, you should only use this if you have a capable graphics card so that it doesn't effect the performance of that –  Flaunting Jul 18 at 9:40
    
Caleb in the end i answered your question exactly how you asked it i don't understand what your issue is –  Flaunting Jul 18 at 9:42
    
I can read Wikipedia, but that does not mean I can understand the complicated terms used. I am looking for an answer from someone who understands what VBO does, and can explain it in simple terms. I will edit my question to make that more clear. –  Caleb Jul 18 at 9:46

It substantially increases speed by reducing workload need from your processor and system memory(RAM). Instead using your graphics card memory increasing performance.

share|improve this answer

protected by Community Dec 7 at 11:38

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.