Contents /
Previous /
Next
Lighting Example Program
public void init(GLDrawable drawable)
{
...
initLight( gl );
...
}
float[] colorBlack = {0.0f,0.0f,0.0f,1.0f};
float[] colorWhite = {1.0f,1.0f,1.0f,1.0f};
float[] colorGray = {0.6f,0.6f,0.6f,1.0f};
float[] colorRed = {1.0f,0.0f,0.0f,1.0f};
float[] colorBlue = {0.0f,0.0f,0.1f,1.0f};
float[] colorYellow = {1.0f,1.0f,0.0f,1.0f};
float[] colorLightYellow = {.5f,.5f,0.0f,1.0f};
public void initLight( GL gl)
{
// First Switch the lights on.
gl.glEnable( GL.GL_LIGHTING );
gl.glDisable( GL.GL_LIGHT0 );
gl.glEnable( GL.GL_LIGHT1 );
gl.glEnable( GL.GL_LIGHT2 );
//
// Light 0.
//
// Default from the red book.
//
gl.glLightfv( GL.GL_LIGHT0, GL.GL_AMBIENT, ambient);
gl.glLightfv( GL.GL_LIGHT0, GL.GL_POSITION, position);
//
// Light 1.
//
// Position and direction (spotlight)
float posLight1[] = { 1.0f, 1.f, 1.f, 0.0f };
float spotDirection[] = { -1.0f, -1.0f, 0.f };
//gl.glLightfv( GL.GL_LIGHT1, GL.GL_POSITION, posLight1 );
//gl.glLightf( GL.GL_LIGHT1, GL.GL_SPOT_CUTOFF, 60.0F );
//gl.glLightfv( GL.GL_LIGHT1, GL.GL_SPOT_DIRECTION, spotDirection );
//
gl.glLightfv( GL.GL_LIGHT1, GL.GL_AMBIENT, colorGray );
gl.glLightfv( GL.GL_LIGHT1, GL.GL_DIFFUSE, colorGray );
gl.glLightfv( GL.GL_LIGHT1, GL.GL_SPECULAR, colorWhite );
//gl.glLightfv( GL.GL_LIGHT1, GL.GL_SPECULAR, colorRed );
//
gl.glLightf( GL.GL_LIGHT1, GL.GL_CONSTANT_ATTENUATION, 0.2f );
//
// Light 2.
//
// Position and direction
float posLight2[] = { .5f, 1.f, 3.f, 0.0f };
gl.glLightfv( GL.GL_LIGHT2, GL.GL_POSITION, posLight2 );
//
gl.glLightfv( GL.GL_LIGHT2, GL.GL_AMBIENT, colorGray );
gl.glLightfv( GL.GL_LIGHT2, GL.GL_DIFFUSE, colorGray );
gl.glLightfv( GL.GL_LIGHT2, GL.GL_SPECULAR, colorWhite );
//
gl.glLightf( GL.GL_LIGHT2, GL.GL_CONSTANT_ATTENUATION, 0.8f );
}
private void setWhiteMaterial( GL gl )
{
gl.glMaterialfv( GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, colorWhite );
gl.glMaterialfv( GL.GL_FRONT_AND_BACK, GL.GL_DIFFUSE, colorWhite );
gl.glMaterialfv( GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, colorWhite );
gl.glMateriali( GL.GL_FRONT_AND_BACK, GL.GL_SHININESS, 4 );
gl.glMaterialfv( GL.GL_FRONT_AND_BACK, GL.GL_EMISSION, colorBlack );
}
public void display(GLDrawable drawable)
{
...
setWhiteMaterial( gl );
drawSomethingWhite( gl );
setBlueMaterial( gl );
drawSomethingBlue( gl );
...
}