У меня есть примерная 3D-сцена, отрисованная с использованием OpenGL ES 1.1.
Вот что я получаю, когда у меня есть матрица проекции идентичности (я также использую карты нормалей и зеркальных отображений):
Так что все выглядит хорошо.
Но если я установлю перспективу, используя glFrustum
, я получу это:
Так что кажется, что нормали инвертируются, и если я пытаюсь умножить их на -1, я получаю это:
Это имеет эффект, как будто свет был с противоположной стороны.
Я должен также упомянуть, что при использовании матрицы проекции идентичности я должен установить
glCullFace(GL_FRONT);
(я думаю, это потому, что нормализованные координаты устройства левши).
Я буду рад услышать любые предложения о том, как решить эту проблему.
Edit.
Вот настройка проекции:
float right = 0.03;
float top = 0.045;
float near = 0.1;
float far = 100.0;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustumf(-right, right, -top, top, near, far);