Lighting! My light position variable is declared as: GLfloat light[4]; Remember: graph.light[3] = 1; //0 for directional 1 for positional So all that's left to do is Turn it on, enable which lights you want on. Set some options (per light) glLightfv(GL_LIGHT0, GL_POSITION, graph.light); glShadeModel(GL_SMOOTH); //gl_smooth is phong-ish //gl_flat is gouraud-ish glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 2.0); // atten factor is 1/(c + l*d + q*d^2) If you want some spotlight options: GLfloat spot_direction[] = { 0.0, 0.0, -1.0 }; glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 45.0);//half cone glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction); glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 2.0); //compare v dot d to cosine (cutoff) Math at bottom of: http://www.glprogramming.com/red/chapter05.html Generally you'll want your objects to have some material properties. (May consider colormaterial later on) glEnable(GL_COLOR_MATERIAL); glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE); GLfloat copdif[] = {.7038, .27048, .0828, 1.0}; GLfloat copspec[] = {.256777, .137622, .086014, 1.0}; GLfloat copshini[] = { 12.8 }; glMaterialfv(GL_FRONT, GL_DIFFUSE, copdif); glMaterialfv(GL_FRONT, GL_SPECULAR, copspec); glMaterialfv(GL_FRONT, GL_SHININESS, copshini);