Я работаю над игровым движком уже месяц, и я закончил базовые вещи OpenGL.Тем не менее, единственное, что я не могу заставить работать, как я ожидаю, это освещение.(Примечание: это первый раз, когда я серьезно работал с OpenGL)
То, что я хочу, это близко к реалистичной симуляции освещения - когда поверхности, обращенные к свету, освещаются больше, чем те, что дальше и т.свет должен иметь положение и цвет.Вот как я думал, что это может быть реализовано:
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);
Вместо того, чтобы делать то, что я ожидаю, он дает мне освещение, как будто там, где есть камера, есть свет!На каждой поверхности одинаковое освещение!
Что я делаю не так?
Спасибо, я ценю это.