OpenGL只闪耀一种方式

时间:2014-10-03 16:19:37

标签: java opengl lwjgl

我正在玩Java中的OpenGL(LWJGL)并尝试添加照明。
我添加了一个灯,但它只朝一个方向发光。

以下是说明灯光工作原理的图像:Light shining only one direction

每次渲染场景时都会运行以下代码

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();

我的问题是:为什么光以这种方式起作用,我必须改变什么?

0 个答案:

没有答案