Направление света OpenGL меняется при рисовании в текстуру кадрового буфера - PullRequest
0 голосов
/ 10 февраля 2011

У меня есть приложение для iPhone (OpenGL ES 1.1), которое выполняет рендеринг в текстуры.Я настраиваю объект framebuffer и использую glFramebufferTexture2D, чтобы прикрепить к нему текстуру.

Все работает отлично, за исключением того, что направления света меняются при рисовании в этом объекте framebuffer.Я указываю световые направления следующим образом:

float theDirection[4] = { x, y, z, 0 }
glLightf( lightIndex, GL_POSITION, theDirection )

При рендеринге без объекта кадрового буфера все мои световые направления верны.При рендеринге с объектом framebuffer, я должен отменить направление для того, чтобы все выглядело одинаково.

В качестве примечания, направления света также меняются местами (с или без объекта framebuffer), когда я работаю наiPhone 3G с iOS 3.2.Если я работаю на iPhone или iPad на 4.x, направления света не меняются местами.

Есть идеи?

1 Ответ

0 голосов
/ 15 марта 2011

Как ни странно, решение здесь состояло в том, чтобы включить GL_CULL_FACE.Если GL_CULL_FACE отключен в проекте MonoTouch с использованием OpenGL ES 1.1, то направление освещения GL (для направленного GL_LIGHT0) будет отрицательным на некоторых устройствах или версиях ОС, я не уверен, какие именно.

Проекты C ++ на основе xcode не имеют этой проблемы.Проекты OpenGL ES 1.1 xcode одинаково хорошо работают на всех устройствах и версиях ОС, которые я тестировал, независимо от настроек GL_CULL_FACE.

По сравнению с результатом идентичного кода GL в проекте Ccode X ++ (который одинаков для всех устройствнезависимо от GL_CULL_FACE), вот устройства, на которых я вижу инвертированное освещение в MonoTouch:

  • iPad под iOS 4.2.1
  • Симулятор iOS под iOS 4.2
  • iPhone4 под управлением iOS 4.2.1

На моем iPhone 3G под управлением iOS 3.1.2 освещение правильно .

Я опубликовал сообщение об ошибке в Novell:https://bugzilla.novell.com/show_bug.cgi?id=679896

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