Please help,
I am trying to build a Display list with a simple “cube” that is the color RED. I have a function that builds a display list called buildWidget(GL gl). A copy of the code follows:
float red[] = { 0.8f, 0.1f, 0.0f, 1.0f };
gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos, 0);
gl.glEnable(GL.GL_CULL_FACE);
gl.glEnable(GL.GL_LIGHTING);
gl.glEnable(GL.GL_LIGHT0);
gl.glEnable(GL.GL_DEPTH_TEST);
solidWidget = gl.glGenLists(1);
gl.glNewList(solidWidget, GL.GL_COMPILE);
gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, red, 0);
buildWidget(gl);
gl.glEndList();
gl.glEnable(GL.GL_NORMALIZE);
public static void buildWidget(GL gl) {
gl.glShadeModel(GL.GL_FLAT);
gl.glNormal3f(0.0f, 0.0f, 1.0f);
gl.glBegin(GL.GL_POLYGON);
// Front Face
gl.glVertex3f(-1.0f, -1.0f, 1.0f);
gl.glVertex3f(1.0f, -1.0f, 1.0f);
gl.glVertex3f(1.0f, 1.0f, 1.0f);
gl.glVertex3f(-1.0f, 1.0f, 1.0f);
gl.glEnd();
gl.glBegin(GL.GL_POLYGON);
// Back Face
gl.glVertex3f(-1.0f, -1.0f, -1.0f);
gl.glVertex3f(-1.0f, 1.0f, -1.0f);
gl.glVertex3f(1.0f, 1.0f, -1.0f);
gl.glVertex3f(1.0f, -1.0f, -1.0f);
gl.glEnd();
gl.glBegin(GL.GL_POLYGON);
// Top Face
gl.glVertex3f(-1.0f, 1.0f, -1.0f);
gl.glVertex3f(-1.0f, 1.0f, 1.0f);
gl.glVertex3f(1.0f, 1.0f, 1.0f);
gl.glVertex3f(1.0f, 1.0f, -1.0f);
gl.glEnd();
gl.glBegin(GL.GL_POLYGON);
// Bottom Face
gl.glVertex3f(-1.0f, -1.0f, -1.0f);
gl.glVertex3f(1.0f, -1.0f, -1.0f);
gl.glVertex3f(1.0f, -1.0f, 1.0f);
gl.glVertex3f(-1.0f, -1.0f, 1.0f);
gl.glEnd();
gl.glBegin(GL.GL_POLYGON);
// Right face
gl.glVertex3f(1.0f, -1.0f, -1.0f);
gl.glVertex3f(1.0f, 1.0f, -1.0f);
gl.glVertex3f(1.0f, 1.0f, 1.0f);
gl.glVertex3f(1.0f, -1.0f, 1.0f);
gl.glEnd();
gl.glBegin(GL.GL_POLYGON);
// Left Face
gl.glVertex3f(-1.0f, -1.0f, -1.0f);
gl.glVertex3f(-1.0f, -1.0f, 1.0f);
gl.glVertex3f(-1.0f, 1.0f, 1.0f);
gl.glVertex3f(-1.0f, 1.0f, -1.0f);
gl.glEnd();
}
The problem is that the red cube is created, but the shadow is cast across the “whole” cube as one Object instead of one face being brighter than another because it is facing the light source.
Can somebody please tell me how to do this? I am sure it is probably simple, but I am just learning.
Thanks in advance.