Я работаю над движком игры в течение месяца, и я закончил основной материал OpenGL. Тем не менее, одна вещь, с которой я не могу работать, как я ожидаю, это освещение. (Примечание: это первый раз, когда я серьезно работал с OpenGL)Open GL Lighting Problem
То, что я хочу, близок к реалистичному моделированию освещения - там, где поверхности, обращенные к свету, освещены больше, чем те, которые расположены дальше, и т. Д. Основной свет должен иметь положение и цвет. Это, как я думал, что это может быть реализовано:
float lightv[4]; // populated with (0.6, 0.6, 0.6, 1)
float positionv[4]; // populated with (0, 10, 0, 1)
int lightID = GL_LIGHT0;
int attenuationType = GL_LINEAR_ATTENUATION;
float attenuationValue = 1;
glLightf(lightID, attenuationType, attenuationValue);
glLightfv(lightID, GL_DIFFUSE, lightv);
glLightfv(lightID, GL_POSITION, positionv);
glEnable(lightID);
Вместо того, чтобы делать то, что я ожидаю, что это сделать, это дает мне зажигая, как если бы был свет, где камера! Каждая поверхность имеет такое же освещение!
Что я делаю неправильно?
Спасибо, я ценю это.