Iterator<Vector3[]> i = shape.getFaces();
while (i.hasNext()) {
gl.glBegin(GL.GL_POLYGON);
Vector3[] face = i.next();
//compute normal
Vector3 n =face[1].sub(face[0]).cross(face[2].sub(face[1])).normalize();
for ( Vector3 v: face) {
gl.glNormal3d(n.x, n.y, n.z);
//gl.glTexCoord2f(1.0f, 1.0f);
//gl.glColor3d(v.a1, v.a2, v.a3);
gl.glVertex3d(v.x, v.y, v.z);
gl.glTexCoord2f(0.0f, 1.0f);
}
gl.glEnd();
}
gl.glPolygonMode( GL.GL_FRONT, GL.GL_LINE );
gl.glLineWidth(1.7f);
gl.glDisable(GL.GL_LIGHTING);
gl.glScaled(1.01, 1.01, 1.01);
i = shape.getFaces();
while (i.hasNext()) {
gl.glBegin(GL.GL_POLYGON);
Vector3[] face = i.next();
//compute normal
Vector3 n =face[1].sub(face[0]).cross(face[2].sub(face[1])).normalize();
for ( Vector3 v: face) {
gl.glNormal3d(n.x, n.y, n.z);
//gl.glTexCoord2f(1.0f, 1.0f);
gl.glColor3d(0.2,0.2, 0.2);
gl.glVertex3d(v.x, v.y, v.z);
gl.glTexCoord2f(0.0f, 1.0f);
}
gl.glEnd();
}
gl.glEnable(GL.GL_LIGHTING);
gl.glPopMatrix();
gl.glPopAttrib();
}
//draw shadows
gl.glLoadIdentity();
gl.glDisable(GL.GL_LIGHTING);
// Set camera transform
glu.gluLookAt(cameraFrom.x, cameraFrom.y, cameraFrom.z,
cameraTo.x, cameraTo.y, cameraTo.z,
0, 1, 0);
gl.glMultMatrixd(shadowProjectionMatrix(new Vector3(75,350,-75), new Vector3(0,-20 + 0.0,0), new Vector3(0,-1,0)), 0);
gl.glColor3d(0.85, 0.85, 0.85);
for ( DrawShape shape: toDraw) {
gl.glPushMatrix();