Когда я делаю небесный купол, небесный ящик или небесный самолет, я на самом деле его не освещаю.Я просто наложил на нее текстуру и отрендерил ее.
glDisable(GL_LIGHTING);
glDisable(GL_CULL_FACE);
Render sky dome
glEnable(GL_LIGHTING);
glEnable(GL_CULL_FACE);
Однако проблема в том, что изменение состояния может быть дорогостоящим.Таким образом, один из способов устранить изменение состояния GL_CULL_FACE - убедиться, что ваши нормали указывают верный путь.Если для CULL_FACE установлено значение CCW (Counter ClockWise), то нормали должны указывать на вас.Однако, если для CULL_FACE установлено значение CW (ClockWise), то нормали должны быть направлены от вас.Единственный способ устранить изменение состояния GL_LIGHTING - использовать шейдеры и определить собственную схему освещения.Тем не менее, я не знаю, стоит ли это более или менее дорого.
Проблема со скайбоксом похожа, но у нее есть и другие проблемы.Вы можете столкнуться с проблемами искажения, если ваша точка зрения не в центре.Обычно я сначала визуализирую скайбокс, центрируясь на камере, затем очищая буфер глубины и отрисовывая все остальное.Таким образом, ваш скайбокс не должен быть смехотворно большим.