マウスでカメラを動かそうとコードをいろいろ追加していたら、ライトがうまくあたらなくなってしまった。原因は視点の位置を決定する前に光源の位置を設定していたからだった。
GLfloat lightPosition[4] = {1.0f, 1.0f, 1.0f, 0.0f}; glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
glLightfv()で光源の位置を決定する場合はそのときのマトリクスの状態が考慮される。自分の書いていたコードでは視点を決定する前にライトの設定をしていたので、まったく違う位置にライトが設定されてしまっていた。