OpenGL: текстура и простой цвет по-разному реагируют на окружающий свет? - PullRequest
4 голосов
/ 19 сентября 2008

Это довольно старая проблема, возникшая у меня с приложением OpenGL.

У меня довольно сложная модель, некоторые полигоны в ней нетекстурированы и окрашены простым цветом с помощью glColor (), а другие текстурированы. Часть текстуры того же цвета, что и нетекстурированные полигоны, и между ними не должно быть видимого шва.

Проблема в том, что, когда я включаю окружающий компонент источника света, появляется шов между двумя видами полигонов.

смотри это изображение: http://www.shiny.co.il/shooshx/colorBug2.png

Левое изображение без внешнего освещения, а правое изображение с внешним освещением (0.2,0.2,0.2).

значение RGB цвета на текстуре идентично значению RGB цветных граней. Альфа текстур везде установлена ​​на 1,0.

Для затенения текстуры я использую GL_MODULATE.

Может кто-нибудь придумать причину, по которой это может произойти, и возможное решение?

1 Ответ

2 голосов
/ 19 сентября 2008

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

Вы также можете попробовать установить все цвета материала на белый (с glMaterial()) перед рендерингом граней с текстурой. С некоторыми настройками (не помню какие) сама текстура модулируется текущим цветом.

Надеюсь, это поможет или, по крайней мере, укажет вам полезное направление.

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