Yes, yes, Display Lists or VBOs? Here we go again.

Started by elias4444, October 27, 2008, 22:23:26

Previous topic - Next topic

elias4444

I know it's an age-old question, but I'm coming up against a wall here. I'm building my next game engine and trying to decide which way to go forward. Most objects in the game will be static meshes, except for the character actors which will be animated. Each object will have it's own material list as well.

Now, with Display Lists, I need to load up and compile a display list for each frame of the animation. No problem, but I'm worried about how much memory that'll eat up on the graphic card (I'm guessing it'll just start swapping with system memory if it fills up, but that'll slow it down I'm sure). With display lists I can include material calls for each part of the object as well (simplifying the code a bit, and allowing me to call different animations more easily).

With VBOs, I'll need to divvy up each object into separate material objects in order to make the glMaterial or texture calls. This means more objects to manage. I may also have the problem of needing to make multiple VBOs for the same object in order to offset animation keyframes (either that or replace the vertex information even more during each loop before each draw).  The plus side of VBOs seems to be better video memory management.

So, any suggestions or advice? Anyone have any experience with this?

Thanks!!


=-=-=-=-=-======-=-=-=-=-=-
http://www.tommytwisters.com

bobjob

I think there is more that enough memory to run display lists for most basic games.


Just a side note, I tend to use DLs as much as possible and only really use VBO's for objects that need tangent and binormal data passed to the shader program.

plummew

I originally experimented with display lists and interpolation between keyframe meshes, then moved to the same but using VBOs. (Simple but loading/memory requirements get out of hand if complex/large-scale animations required)
After that I moved to VBOs and mesh skinning on CPU. (Smaller memory footprint and relatively easy to understand/implement using bone matrix skeletons but quickly becomes CPU bound as model/animation complexity increases)
Now I use VBOs and palette matrix skinning on the GPU. (Actually simpler to implement than skinning on CPU, can handle massive models (as static models loaded into GfX card in VBOs) and only bone transform matrices passed from main memory to Gfx card per frame)

Am happy with the performance of skinning on the GPU but does limit shadowing to shadows maps rather than shadow volumes - this isn't much of an issue though as volumes are too CPU intensive anyway. (Maps being image space based and all that.)

Hope this helps a little.