Some background info:
I am working on an opengl game for fun/experience, and in the hope of releasing a small independent game one day. My OpenGL skills are still very limited, and my knowledge does not stretch far beyond OpenGL immediate mode and display lists.
Currently I render my animated models directly in immediate mode (after loading from ms3d file). With a rather large/complex terrain, I can only load and render about 20 animated models consisting of more or less 200 triangles (also texture mapped). As my one goal is to learn more about programming and game development, I feel that it is important for me to learn VBO (vertex buffer object), but as I am a student I am rather short on time. I would rather spend my time implementing more things than learning something potentially difficult (I will of course tackle this in the next holiday).
My question: Is it worth it to learn VBO and change the model loader&renderer to use VBO instead of immediate mode calls? Will it be way more efficient? I am thinking of games like Left4Dead, etc., where you may have many detailed models (and even though I am not aiming to be in the same league, I would like some hints as how to improve). I decided not to use display lists as it would have to be reconstructed every frame. Will the same not apply for VBO?
VBO will be more efficient. HOWEVER you can also speed up animation using display lists, so you can skip VBO and use display lists. If you’re coding for fun and for yourself, there’s little reason to chase after most recent technology. There are more computers that support OpenGL 2, than computers that support OpenGL 4.
Regardless of OpenGL version you use shaders are worth investigating – GLSL is available since OpenGL 2.0, and it is quite powerful.
Anyway, if you’re interested in using OpenGL/shaders you might want to download and examine NVIdia OPenGL SDK. It contains interesting examples, for example animating skinned model using vertex shaders and display lists.
If they “would have to be reconstructed every frame”, then you’re not approaching problem properly (unless your geometry is completely dynamic and changes topology every frame). Either split model into parts that do not need reconstruction, or put the whole thing into single display list and animate parts using vertex shader.