Display lists: Modern usage

Started by
1 comment, last by zedz 16 years, 9 months ago
Display lists. Are they used in modern high-performance code, and if they are, what for? These are the general classes of obvious potential uses I can think of: 1. Storing texture data. In the olden days this was the most efficient way to switch between textures quickly, since there were no texture names. Now that there are, it seems likely that using display lists to store textures is always going to be the worst option. 2. Storing vertex data. In principle, drawing vertices from a display list should be no less efficient than drawing from a VBO. If I were making a GL implementation I'd store display list vertex data in VBOs, so they'd actually be the same thing. Of course, display list meshes are traditionally limited to static data, but nowadays you can apply bone deformation in a vertex shader. Still, it doesn't seem like there'd be an advantage to using display lists. 3. Storing state vector changes. Calling a display list to set up complex state should be far more efficient than calling the state functions separately. This is usually the case on my system (X11, nvidia driver version 1.0.8776, GeForce 6200). Khronos are reinventing this wheel for "Long Peaks" and the new "state objects" will probably be more efficient and a little less error-prone. Right now, though, it seems like display lists are the most efficient option for large state changes.
Advertisement
I'm assuming you are an old time programmer, from pre-2000.

GL has changed. There is many ways to do the same thing.
Concept : VBO makes display lists useless.
Practical : A few people have said put your data in a VBO and still using a display list is faster on nVidia since it does object to frustum culling.

Long peaks is comming. The idea of having geometry only display lists came up. You won't be able to put other commands since it makes drivers complicated and buggy.

"display lists are the most efficient option for large state changes."

I think not but perhaps you are correct.
I think GPUs are not capable of executing display lists on board. The driver just tells it what series of commands it needs to execute.

Also, in general the bottleneck in most programs (games?) is the fillrate. The memory interface on video cards is slow. If you use blending, it's even slower.
Sig: http://glhlib.sourceforge.net
an open source GLU replacement library. Much more modern than GLU.
float matrix[16], inverse_matrix[16];
glhLoadIdentityf2(matrix);
glhTranslatef2(matrix, 0.0, 0.0, 5.0);
glhRotateAboutXf2(matrix, angleInRadians);
glhScalef2(matrix, 1.0, 1.0, -1.0);
glhQuickInvertMatrixf2(matrix, inverse_matrix);
glUniformMatrix4fv(uniformLocation1, 1, FALSE, matrix);
glUniformMatrix4fv(uniformLocation2, 1, FALSE, inverse_matrix);
when u create a DL use glBegin()..glEnd(), VBOs + VAs (combined with DL) give no advantage.

for static stuff, WRT speed both DL + VBO will be roughly equal in performance

This topic is closed to new replies.

Advertisement