Classically, display lists were used for when the graphics subsystem was
faster than the host processor. If you have dynamically changing gemoetry
( i.e. vertex positions are a function of time ), which doesn't include
objects which are translating, scaling, or rotating, then display lists may
be a good idea. On SGI's current systems, I believe that display lists are
a wash, but of course, your application may prove that statement wrong.
As for nested display lists, in OpenGL, they are premitted, and were
designed into the system. As a matter of fact, this is the only way to
really provide an "editing" mechanism in OpenGL display lists. There is
a maximum number of nested display lists permitted ( use GL_MAX_LIST_NESTING
with glGet*(); to check the limit ). As for the speed issue, its better I
let a more informed person get back to you with those ideas.
Quote:> Is the assumption that if generating data is freed after a display list object
> is created, then that object is in the most efficient form for manipulation
> with standard graphics transformations, and so if only a couple of dynamic
> objects need to be updated in the scene it is best to use a mixed display list
> - immediate mode method?
That's a reasonable inital guess. As I'm sure you know, performance is
an iterative process, so testing these ideas is a good idea.
As I understand it, and this is derived from several non-linear
so take it at face value. The way GL works is that when you make a graphics
function call, say glVertex(), the data of that call are merged with a token
describing what the data are, and then passed over to the geometry subsystem.
A display lists tokenizes the calls, then stores the tokens and data in
memory. When you call the display list, its then a quick memory transfer
of that data to the geometry. What this seems to imply is that it really save
the host the tokenizing step to increase performance, which could be very
Across a network, display lists ( at least in OpenGL ) are a real win since
the data of the list is transmitted across the net once to the server on the
other side, and then subsequent references are done merely by the list index
lowering the amount of data that is transmitted across the wire. A good
thing to keep in mind if you will be rendering across a net.
Hope that's some help.
Silicon Graphics, Inc. (301) 384-6916
Boldly going where no one has before ... and stumbling the entire way.