несколько источников света в GLObjViewer (OpenGL) - PullRequest
0 голосов
/ 19 июня 2011

Я строю 3D-дом в OpenGL.Я решил использовать GLObjViewer для загрузки моделей и текстур.Это отлично работает.Но модули затенения GLObjViewer просто поддерживают «единственный фиксированный направленный источник света, освещающий отрицательную ось Z по умолчанию OpenGL», как указано в документации.Поэтому, когда я исправляю свет, некоторые стены становятся темными, а когда я двигаю свет с помощью камеры, оттенки стены постоянно меняются.

Теперь я хочу, чтобы все стены были хорошо освещены, а их оттенкине меняется после перемещения камеры.Подскажите пожалуйста как мне это позволить?(Как использовать несколько источников света в GLObjViewer или другом решении).

Документацию и исходный код GLObjViewer можно найти здесь: http://www.dhpoware.com/demos/glObjViewer.html

Ответы [ 2 ]

1 голос
/ 19 июня 2011

Позиционирование света OpenGL-2 преобразуется матрицей просмотра модели.Это означает, что вы должны установить светлое положение после размещения камеры, но перед применением локальных преобразований объекта.

OpenGL до версии 3 поддерживает не менее 8 источников света (GL_LIGHT0… GL_LIGHT7).Который может быть включен и установлен независимо.Более поздние версии OpenGL полностью шейдерные;источники света реализуются через соответствующие шейдеры, параметры света передаются через униформу.

Совместимость с OpenGL-3 и более ранние версии имеют предопределенные формы, такие как gl_LightPosition[], который используется в этом приложении.Вы устанавливаете эти предопределенные униформы через соответствующие установщики состояния OpenGL.glLight… в вашем случае.

Ядро OpenGL-3.1, а затем и вовсе отказаться от предопределенных легких форм и возложить на программиста бремя его реализации.

0 голосов
/ 21 июня 2011

Вам также может повезти:

glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1);

При этом будут рассчитываться зеркальные отражения от начала системы координат глаза, а не статически (направление, параллельное оси и к оси -z).

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