View Full Version : Noobie question on display lists

03-23-2009, 02:44 PM
There is no actual problem, I just want to understand display lists better.

The code below is (obviously) part of a larger program. In main, init_ground is called. After, the glut loop is entered, and the callback functions are looped through, one of which calls a display function, which calls the display list 'ground'.

The bit that confuses me is how does the display function know what the contents of the 2 arrays are (needed for the material properties) if it is only calling the display list?

void init_ground()
GLfloat amb_and_diffuse[]= {0.1, 0.7, 0.1, 1.0};
GLfloat emission[]= {0.0, 0.2, 0.0, 1.0};

ground = glGenLists(1);
if (ground!=0)
glNewList(ground, GL_COMPILE);
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, amb_and_diffuse);
glMaterialfv(GL_FRONT, GL_EMISSION, emission);

glNormal3f(0.0, 1.0, 0.0);
glVertex3f(-100.0, 0.0, -100.0);
glVertex3f(100.0, 0.0,-100.0);
glVertex3f(100.0, 0.0, 100.0);
glVertex3f(-100.0, 0.0, 100.0);
fprintf(stderr, "Error: OpenGL could not obtain a list for the ground\n");

03-23-2009, 02:54 PM
Apart from the exceptions listed in the documentation, every gl command is compiled within the display list, even glMaterialfv commands and their parameters.
Imagine GL commands are assembly instructions for a Lego toy. Display list compiles the finished result to a 3D printing that can be build with 1 instruction.

03-23-2009, 03:10 PM
So, if material commands require arrays outside of the display list, those arrays are compiled with the commands in the display list?

03-24-2009, 01:45 AM
Think about it : if it was not the case, the performance benefits of using display lists would disappear.