I recently started adding VBO support to a program I’ve been developing (some old 2.5D FPS engine) and noticed some results I found very puzzling. (All of the listed results were made on a Geforce 8600 with recent drivers but some were confirmed on a GTX 280):
- when using a streaming VBO containing more than vertex, texture coordinates and color information the VBO version is noticably slower than using immediate mode.
- when reducing the VBO to the 3 abovementioned entries the speed is approximately the same
- using a static VBO only containing vertex and texture coordinates the CPU load measurably decreases but the overall frame rate only increases by 1-2 fps when vertical sync is off and the frame rate is far above 200. With lower FPS values there’s absolutely no measurable difference. Actually, due to the maintenance overhead of the VBO the resulting code is actually slower than a version without any VBOs!
- even when using a very large amount of vertices I can’t see any improvement in using VBOs at all.
Concerning these results I don’t really understand the recent developments. There’s many situations where a VBO is just cumbersome to use and yet the only viable alternative has been deprecated in OpenGL. Recoding such applications will probably yield the same results as my tests…