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], который должен быть центрирован в нижнем левом углу квадратора. Однако при рендеринге сцены это выглядит так:
Похоже, что это правый нижний угол - но это не так. Я проверил это, и оказалось, что ось X перевернута. Я делаю что-то не так с gluLookAt? Или я что-то пропустил?
1 ответ
Хорошо, это немного глупо, но я нашел ответ через несколько минут после написания этого вопроса (через несколько часов после того, как это произошло):
"Камера" смотрит на заднюю часть квадроцикла. Присвоение "0" для всех z-координат четырехугольника и "+1" для z-координаты точки зрения в gluLookAt исправило это.