我正在玩Java中的OpenGL(LWJGL)并尝试添加照明。
我添加了一个灯,但它只朝一个方向发光。
以下是说明灯光工作原理的图像:
每次渲染场景时都会运行以下代码
FloatBuffer lightPos = BufferUtils.createFloatBuffer(4);
lightPos.put(new float[]{0f,-2f,0f,1f});
lightPos.flip();
FloatBuffer LightDiffuse = BufferUtils.createFloatBuffer(4);
LightDiffuse.put(new float[]{1f,1f,0f,0f});
LightDiffuse.flip();
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_DIFFUSE, LightDiffuse);
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_POSITION, lightPos);
GL11.glLightf(GL11.GL_LIGHT1, GL11.GL_LINEAR_ATTENUATION, 0.6f);
以下代码在程序开头运行以初始化所有内容
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glClearDepth(1.0);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthFunc(GL11.GL_LEQUAL);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_LIGHT1);
GL11.glLightf(GL11.GL_LIGHT1, GL11.GL_LINEAR_ATTENUATION, 0.5f);
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GLU.gluPerspective(
80.0f,
(float) displayMode.getWidth() / (float) displayMode.getHeight(),
0.1f,
500.0f);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
我的问题是:为什么光以这种方式起作用,我必须改变什么?