Display lists, VBOs, and vertex arrays

Two questions here:

  1. From what I see in the Red Book, it looks like Display Lists can contain vertex arrays (well at least I see that they can contain calls to the *pointer methods). Is that going to yield a performance boost over using immediate mode type calls in a Display List? If so, why? If the benefit of Display Lists is that they remove the method calls, it would seem you could have as many method calls as you want, thereby negating the benefit of Vertex Arrays.

  2. I understand why VBOs yield a benefit, but I am unclear as to whether or not their contents can be altered. If they can’t be altered, they seem like sort of a mixture of Vertex Arrays and Display Lists. Any info on the nature of these beasts would be appreciated. I’m not looking for code example right now, as there have been many posts about it already.

Thanks for the info,

Keith

In my brief tests to determine if i should use vertex arrays, call lists or both, I found that it took longer for me to create the vertex array than it did for me to create the call list with “immediate mode” calls.

But of course, my experience is VERY limited in this area.

Vertex arrays are more dynamic than display lists and using extensions like vertex_buffer_object or NV_vertex_array_range it is possible to significantly increase throughput for completely dynamic geometry. Take a look at the VertexBufferObject and VertexArrayRange demos in the jogl-demos workspace for examples of use of these extensions.

It’s not legal to use vertex arrays inside glBegin/glEnd but if you can make a display list without that, then you should be good to go. Apart from rarely changing values like materials, display lists generally haven’t been worth our time.

So is the general advice here to give up on display lists all together and learn VBOs? I would imagine the answer is a resounding “yes”, but I want it in writing :slight_smile:

Thanks,

Keith

Ah, nevermind, after reviewing the comments its clear. VBOs it must be :slight_smile:

Keith