Цветовой материал Java OpenGL темнеет, когда тест глубины отключен - PullRequest
4 голосов
/ 26 марта 2010

Я работал с буфером глубины в OpenGL (JOGL), чтобы гарантировать, что некоторые элементы отображаются перед другими, отключив буфер глубины (подробно в моем предыдущем вопросе Java OpenGL, сохраняющий буфер глубины ) .

Это работает, за исключением того, что когда я устанавливаю цвет элемента, который рисуется, когда тест глубины отключен, не появляется никакого блеска материала. Элемент отображается как более темная версия исходного цвета (кажется, что к нему не применен эффект освещения). Есть ли причина, по которой это могло бы произойти? и как я могу предотвратить это?

спасибо, Джефф

1 Ответ

2 голосов
/ 26 марта 2010

Поскольку у вас пока нет ответов, я постараюсь сделать это, хотя я немного догадываюсь.

Несколько причин, по которым я могу представить, почему эффект, который вы видите, произойдет:

  • В отличие от рассеянного и рассеянного компонента модели освещения, зеркальный компонент должен учитывать положение глаз относительно объекта и источника света. Так что это, вероятно, будет быстрее, когда OpenGL использует буфер глубины. Я предполагаю, что таким образом - для каждого пикселя, который будет нарисован - он мог бы использовать значение глубины, чтобы завершить координаты глаза с компонентом z.

  • Может быть, это также связано с ослаблением света? Когда используется ослабление света, OpenGL вычисляет расстояние, которое должен пройти свет, прежде чем достигнуть вашего глаза (или это упрощается только путем вычисления расстояния между светом и объектом? Я не уверен.)

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

...