Having Ambient and Diffuse sum to more than one causes inconsistencies with textures. It looks like it is clamping the color from lighting before it multiplies it with the texture.

This commit is contained in:
Bill Kuker 2012-07-02 15:10:36 +00:00 committed by U-WINDOWS-C28163E\Administrator
parent 68954b0ed5
commit 3c0ad074ef

View File

@ -17,6 +17,7 @@ import java.util.Set;
import javax.media.opengl.GL;
import javax.media.opengl.GL2;
import javax.media.opengl.GL2ES1;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
@ -385,15 +386,19 @@ public class RocketFigure3d extends JPanel implements GLEventListener {
gl.glClearDepth(1.0f); // clear z-buffer to the farthest
gl.glDepthFunc(GL.GL_LEQUAL); // the type of depth test to do
gl.glLightModelfv(GL2ES1.GL_LIGHT_MODEL_AMBIENT,
new float[] { 0,0,0 }, 0);
float amb = 0.5f;
float dif = 1.0f;
float amb = 0.3f;
float dif = 1.0f - amb;
float spc = 1.0f;
gl.glLightfv(GLLightingFunc.GL_LIGHT1, GLLightingFunc.GL_AMBIENT,
new float[] { amb, amb, amb, 1 }, 0);
gl.glLightfv(GLLightingFunc.GL_LIGHT1, GLLightingFunc.GL_DIFFUSE,
new float[] { dif, dif, dif, 1 }, 0);
gl.glLightfv(GLLightingFunc.GL_LIGHT1, GLLightingFunc.GL_SPECULAR,
new float[] { dif, dif, dif, 1 }, 0);
new float[] { spc, spc, spc, 1 }, 0);
gl.glEnable(GLLightingFunc.GL_LIGHT1);
gl.glEnable(GLLightingFunc.GL_LIGHTING);