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? Или я что-то пропустил?

1 ответ

Решение

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

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

Другие вопросы по тегам