Display lists are groups of GL commands that have been stored
for subsequent execution.
Display lists are created with glNewList .
All subsequent commands are placed in the display list,
in the order issued,
until glEndList is called.
glNewList has two arguments.
The first argument,
list,
is a positive integer that becomes the unique name for the display list.
Names can be created and reserved with glGenLists
and tested for uniqueness with glIsList .
The second argument,
mode,
is a symbolic constant that can assume one of two values:
Certain commands are not compiled into the display list
but are executed immediately,
regardless of the display-list mode.
These commands are
glColorPointer ,
glDeleteLists ,
glDisableClientState ,
glEdgeFlagPointer ,
glEnableClientState ,
glFeedbackBuffer ,
glFinish ,
glFlush ,
glGenLists ,
glIndexPointer ,
glInterleavedArrays ,
glIsEnabled ,
glIsList ,
glNormalPointer ,
glPopClientAttrib ,
glPixelStore ,
glPushClientAttrib ,
glReadPixels ,
glRenderMode ,
glSelectBuffer ,
glTexCoordPointer ,
glVertexPointer ,
and all of the glGet commands.
Similarly,
glTexImage2D and glTexImage1D
are executed immediately and not compiled into the display list when their
first argument is GL_PROXY_TEXTURE_2D or
GL_PROXY_TEXTURE_1D , respectively.
When glEndList is encountered,
the display-list definition is completed by associating the list
with the unique name list
(specified in the glNewList command).
If a display list with name list already exists,
it is replaced only when glEndList is called.