Поскольку у вас пока нет ответов, я постараюсь сделать это, хотя я немного догадываюсь.
Несколько причин, по которым я могу представить, почему эффект, который вы видите, произойдет:
В отличие от рассеянного и рассеянного компонента модели освещения, зеркальный компонент должен учитывать положение глаз относительно объекта и источника света. Так что это, вероятно, будет быстрее, когда OpenGL использует буфер глубины. Я предполагаю, что таким образом - для каждого пикселя, который будет нарисован - он мог бы использовать значение глубины, чтобы завершить координаты глаза с компонентом z.
Может быть, это также связано с ослаблением света? Когда используется ослабление света, OpenGL вычисляет расстояние, которое должен пройти свет, прежде чем достигнуть вашего глаза (или это упрощается только путем вычисления расстояния между светом и объектом? Я не уверен.)
Так что я предполагаю, что невозможно правильно использовать освещение без буфера глубины. Я думаю, что вы упомянули в своем другом посте, что вы не можете просто очистить буфер глубины, потому что это будет мешать остальной части приложения? Я думаю, что должно быть решение с трафаретами, что-то похожее на «Пример 10-1: Использование теста трафарета» в http://www.glprogramming.com/red/chapter10.html (написано на C, но я надеюсь, что это похоже на JOGL). Трафарет просто запретил бы оставшемуся приложению рисовать ваши драгоценные пиксели.