OpenGL Android: ось X таинственным образом перевернута

Я показываю четырехугольник на псевдо-2D холсте через OpenGL. Для этого я использую орфографическую проекцию через:

gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(-ratio, ratio, -1, 1, 0, 10000);

Координаты отображаемого четырехугольника:

float[] quadCoords = {-10.0f, -10.0f, 5.0f, 
                       10.0f, -10.0f, 5.0f, 
                       10.0f,  10.0f, 5.0f, 
                      -10.0f,  10.0f, 5.0f};

Этот четырехугольник визуализируется как 2 треугольника (я избавлю вас от кода). Я также применяю текстуру, которая хорошо работает. «Камера» определяется перед рендерингом четырехугольника следующим образом:

gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
GLU.gluLookAt(gl, -10.0f, -10.0f, -5, -10.0f, -10.0f, 0f, 0f, 1.0f, 0.0f);

Как видите, центр окна просмотра находится в точке [-10, -10, 0], которая должна располагаться в центре левого нижнего угла четырехугольника. Однако при рендеринге сцены это выглядит так:

Снимок экрана OpenGL

Кажется, что это ПРАВЫЙ нижний угол, но это не так. Я проверил, и оказалось, что ось X перевернута. Я что-то не так делаю с gluLookAt? Или я что-то пропустил?


person manmal    schedule 21.03.2012    source источник


Ответы (1)


Хорошо, это немного глупо, но я нашел ответ через несколько минут после написания этого вопроса (через несколько часов после того, как он возник):

«Камера» смотрит на заднюю часть квадроцикла. Присвоение "0" для всех z-координат квада и "+1" для z-координаты точки зрения в gluLookAt исправило это.

person manmal    schedule 21.03.2012