가 내 게임 세계에 건물을 그릴 카메라를 회전, 내가 그늘 그들 :OpenGL을 조명 문제
GLfloat light_ambient[] = {0.0f, 0.0f, 0.0f, 1.0f};
GLfloat light_position[] = {135.66f, 129.83f, 4.7f, 1.0f};
glShadeModel(GL_SMOOTH);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glColorMaterial(GL_FRONT, GL_AMBIENT);
그것은 잘 작동합니다.
하지만 세상에서 비행하기 시작하면 빛은 마치 세계가 회전하는 물체 인 것처럼 반응합니다. 내 카메라 각도가 변경되면 조명이 바뀝니다.
어떻게 그 회전을 되돌릴 수 있습니까? 그래서 조명은 내가 실제로 세계를 회전시키지 않는다고 생각할 것입니다. 그리고 나서 태양이 하늘에있는 지에 따라 건물에 정적 음영이 생길 수 있습니다.
편집 :
int DrawGLScene()
{
// stuff
glLoadIdentity();
glRotatef(XROT, 1.0f, 0.0f, 0.0f);
glRotatef(YROT, 0.0f, 1.0f, 0.0f);
glRotatef(ZROT, 0.0f, 0.0f, 1.0f);
glTranslatef(-XPOS, -YPOS, -ZPOS);
// draw world
}
문제는 운동/회전 코드에있을 가능성이 높습니다. – DShook
렌더링 코드 –