why the highlight spot of a sphere doesn't change while i'm moving camera?

before:

after (camera moved to the right side of the room):

The position of the lights didn’t change while the camera is moving (In fact, the white ball and the red cone represent where the lights are).

The highlight spot of the sphere (circled) is really strange. I thought the spot would change when I looked at it at a different position (changing the camera), because it’s Specular Reflection! But it just didn’t.

I checked my code and found nothing. Can anyone please give some tips?

Well, I now know what happened. I use glLookAt while glMatrixMode(GL_PROJECTION)!
Let me get this straight:
before:
glMatrixMode(GL_PROJECTION)->gluPerspective(…)->gluLookAt(…)
after (fixed):
glMatrixMode(GL_PROJECTION)->gluPerspective(…)->glMatrixMode(GL_MODELVIEW)->gluLookAt(…)

so, gluLookAt cannot be used under projection matrix!
But now I don’t quite understand while the wrong was like that. Though it was wrong, When I set “gluLookAt”, the camera position did changed! Why just the highlight spot turned out like that?

read this OpenGL Transformation to understand how the matrices work