display list

It works something like this: you have a sequence of graphical operations for drawing something like, say, a teapot. Now, you could write a sequence of commands that set up the colours and textures, then draw the geometry for it and so on, and every time you wanted to draw a teapot, you could call those same commands again.

This is fine, but it is slow, for a few reasons. Firstly, there is the cost of calling functions (e.g. for every polygon, you might have to call several functions. Secondly, it can't really live on the graphics hardware, since it's just a sequence of function calls. Thirdly, it's hard for the driver to optimise the calls or reorder them for improved performance.

The solution? Create a display list. Rather than calling the commands directly, you tell your graphicsAPI: here are a sequence of commands I want you to execute the next time I tell you to. Usually, that sequence of commands would do something useful, e.g. draw a teapot. Now that you've explicitly told it the sequence of commands, it can overcome all of the problems mentioned above -- there's an overhead in constructing the list the first time, but then after that, it's a single function call and all the info is stored on the driver/hardware/server side.

There are disadvantages: Typically, you can not modify a display list once it's created. If you wanted to, say have a teapot with a spout that grew and shrunk, you'd have to create another display list every time. Secondly, there's a small overhead in calling a display list, so if it's only a few commands long, it's not worth doing it this way.