Hi, I'm new to OpenGL, I have made a 3D object, and 3D camera using LWJGL, and they move as expected, The camera follows the 3d object.
Trouble is when I added lighting, they keep following the object when I rotate it, and I want the lights to stay where they are, How to do this?
Here's a piece of code:
//OPENGL SETUP
GL11.glMatrixMode(GL11.GL_PROJECTION); // Select The Projection Matrix
GL11.glLoadIdentity(); // Reset The Projection Matrix
GL11.glMatrixMode(GL11.GL_MODELVIEW); // Select The Modelview Matrix
GL11.glLoadIdentity();
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION, lightpos);
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_POSITION, lightpos2);
/////////////////////////////////////
//THE RENDER FUNCTION
private void render(){
.
.setup camera and boy position, rotation, etc
.
.
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
//GL11.glLoadIdentity(); //this is model view
GL11.glPushMatrix();
GL11.glPushMatrix();
GL11.glLoadIdentity();
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION, lightpos);
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_POSITION, lightpos2);
GL11.glPopMatrix();
GLU.gluLookAt(cam.Center[0], cam.Center[2], -cam.Center[1], cam.Target[0], cam.Target[2], -cam.Target[1], 0.0f, 1.0f, 0.0f);
GL11.glPushMatrix();
GL11.glTranslatef(boy.Position[0], boy.Position[2], -boy.Position[1]);
GL11.glRotatef(boy.angle, 0, 1, 0);
GL11.glEnable(GL11.GL_LIGHTING);
//draw
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture[54]);
GL11.glInterleavedArrays(GL11.GL_T2F_N3F_V3F, 0, world.boy.MeshBuf);
GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, world.boy.FaceCount * 3);
GL11.glDisable(GL11.GL_LIGHTING);
//Enable, Disable lighting are required to illuminate 'boy' only
GL11.glPopMatrix();
GL11.glPopMatrix();
}