Как правильно настроить ландшафтную ортогональную проекцию с помощью OpenGL-ES 2.0 на iOS?
Это все в OpenGL ES 2.0...
Я пытаюсь смешать трехмерную перспективную проекцию с двумерной ортогональной проекцией, чтобы у меня был HUD, сидящий поверх 3D-сцены в моей игре.
Игра работает с ландшафтной ориентацией, и я действительно запутываюсь, как обращаться с ориентацией устройств.
Я визуализирую 3D-материал с подходящей проекционной матрицей и поворачиваю матрицу modelView и мое освещение на 90 градусов, чтобы 3D-сцена была правильным образом поднята. Этот бит все работает нормально.
Моя проблема заключается в том, что я не могу понять, как правильно настроить матрицу 2D-проекции, чтобы начало координат находилось в верхнем левом углу, когда устройство находится в ландшафте с кнопкой home слева.
Как правильно построить ортогональную матрицу, чтобы это произошло? В настоящее время я использую это
// OrthoMatrix does the same as the old GLOrthof function (left, right, bottom, top, near, far);
projectionMatrix2D = mat4::OrthoMatrix(0, screenWidth, screenHeight , 0, -1.0, 1.0);
Однако это просто помещает начало координат в левом верхнем углу, если устройство находится в портрете с кнопкой home внизу, и вращение устройства в моей руке означает все на своей стороне.
Должен ли я пытаться изменить матрицу 2D-проекции или мне нужно сделать что-то еще?
1 ответ:
Я задал этот вопрос на Gamedev, но в более общем виде и получил полезный ответ.
Как я могу создать ортогональный дисплей, который обрабатывает различные размеры экрана?