OpenGL перспективы и проблемы освещения - PullRequest
2 голосов
/ 10 июля 2011

У меня есть примерная 3D-сцена, отрисованная с использованием OpenGL ES 1.1. Вот что я получаю, когда у меня есть матрица проекции идентичности (я также использую карты нормалей и зеркальных отображений):

enter image description here

Так что все выглядит хорошо.

Но если я установлю перспективу, используя glFrustum, я получу это:

enter image description here

Так что кажется, что нормали инвертируются, и если я пытаюсь умножить их на -1, я получаю это:

enter image description here

Это имеет эффект, как будто свет был с противоположной стороны.

Я должен также упомянуть, что при использовании матрицы проекции идентичности я должен установить

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);

1 Ответ

0 голосов
/ 10 июля 2011

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

Помните, что в матрице проекции должны быть только проекция и тип размещения камеры.«Расположение камеры» принадлежит представлению модели.

...