Большая часть моего освещения работает так, как я хочу, но мне кажется, что мне не хватает окружающего освещения.То есть стороны от солнца полностью черные (я надеялся на 50% окружающей среды), в то время как стороны от солнца выглядят освещенными, как я и ожидал.
Вотмой код настройки освещения (отредактированный с оригинала, см. примечание ниже):
- (void) setupLighting
{
const float amb = 2.0;
const float LightAmbient[][4] = { { amb, amb, amb, 1.0f },
{ amb, amb, amb, 1.0f }
};
const float LightDiffuse[] [4] = { { 1.0f, 1.0f, 1.0f, 1.0f },
{ 1.0f, 1.0f, 1.0f, 1.0f }
};
const float LightPosition[][4] = { { 1.0f, 4.0f, 2.0f, 0.0f },
{ 0.0f, 10.0f, 0.0f, 1.0f }
};
glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient[0]);
glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse[0]);
glLightfv(GL_LIGHT0, GL_POSITION, LightPosition[0]);
glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient[1]);
// etc., snip -- no LIGHT1 for this round
glColorMaterial (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
glEnable(GL_COLOR);
//glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHT0);
//glEnable(GL_LIGHT1);
glEnable(GL_LIGHTING);
}
(ПРИМЕЧАНИЕ: LIGHT1 пока что закомментирован - я просто пытаюсь заставить LIGHT0 делать то, что я хочу.)
Не уверен, имеет ли это значение, но я рисую юнит-выровненные юнит-кубы с текстурным отображением (в стиле MineCraft), используя glDrawArrays ().Все мои нормы кажутся правильными;если я выключу освещение, все отрисовывается правильно (только с плоским освещением).
Любые подсказки?
Спасибо!
Редактировать (Добавлен скриншот.)
Редактировать В комментариях я увеличил значения окружения до 2,0, и теперь это выглядит так, как я ожидал для примерно 50% окружения.Это кажется странным - я думал, что значения освещения были закреплены на [0, 1] ...?Какую фундаментальную концепцию об окружающем свете я не придумываю?