问题描述:

Trying to get a grasp on lights and working through the OpenGL Superbible book.

Below is what I am currently using for my lighting. It's placed in the SetupRC function.

The lighting is mostly working as I expected as per position etc but I am confused on why when I turn the camera, it gets brighter on places where it was previously darker. I have not moved the camera position's but the light still moves.

Why is this? Sort of confused here.

 GLfloat ambient[] = { 0.7f, 0.7f, 0.7f, 0.5f };

GLfloat diffuse[] = { 1.0, 1.0f, 1.0f, 1.0f };

glEnable(GL_LIGHTING);

glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);

glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);

glEnable(GL_LIGHT0);

GLfloat ambientLight[] = {1.0f, 0.0f, 1.0f, 0.5f};

glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight);

glEnable(GL_COLOR_MATERIAL);

glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); //GL_AMBIENT_AND_DIFFUSE

网友答案:

The reflected lights has a direction, set by the normal to the surface.
The position of the light, surface and camera affect how much light the camera sees.

Or possibly see OpenGL lighting problem when rotating the camera

相关阅读:
Top