Вопрос освещения OpenGL - PullRequest
1 голос
/ 07 ноября 2010

У меня все освещение OpenGL работает должным образом, с нормальными значениями, материалами и т. Д.

Моя проблема заключается в том, как OpenGL отображает лица, когда свет находится за лицом.Если источник света находится позади лица, он должен отображать черное лицо, но вместо этого он воспроизводит то, как будет выглядеть задняя сторона лица.Как мне остановить это странное поведение.Мне трудно описать, что происходит, но, надеюсь, вы знаете, как решить эту проблему.

Заранее спасибо.

РЕДАКТИРОВАТЬ: Хорошо, скажем, у меня есть плоский квадратный многоугольник для репрезентации стены,С какой бы стороны я ни включал свет, обе загораются, хотя должна светиться только одна сторона, а другая должна быть черной (или очень темной из-за другого / внешнего освещения).Видишь проблему?Это похоже на бумагу, потому что свет только проходит и появляется не на той стороне лица.

1 Ответ

2 голосов
/ 07 ноября 2010

Проблема, с которой вы сталкиваетесь, возникает из-за того, что обе стороны многоугольника используют одинаковые нормали в своих расчетах освещения.

Для решения этой проблемы необходимо установить:

float modelTwoside[] = {GL_TRUE};
glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, modelTwoside);

Это вызывает OpenGLобратить нормали перед рендерингом обратной стороны.OpenGL также будет использовать материал спины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...