Это все в OpenGL ES 2.0 ...
Я пытаюсь смешать трехмерную перспективную проекцию с двухмерной ортогональной проекцией, чтобы в моей игре HUD сидел поверх 3D-сцены.
Игра работает в альбомной ориентации, и я очень запутался, как обращаться с ориентацией устройства.
Я визуализирую 3D-объекты с помощью подходящей проекционной матрицы и поворачиваю матрицу modelView и мое освещение на 90 градусов, чтобы 3D-сцена находилась в правильном направлении. Этот бит все отлично работает.
Моя проблема в том, что я не могу понять, как правильно настроить матрицу 2D-проекции, чтобы исходное положение находилось в верхнем левом углу, когда устройство находится в горизонтальной ориентации, а кнопка «Домой» слева.
Как правильно построить ортографическую матрицу, чтобы это произошло? Я сейчас использую это
// 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);
Однако это просто помещает начало координат в верхний левый угол, если устройство находится в портретном режиме, а кнопка «Домой» находится внизу, а вращение устройства в моей руке означает, что все на его стороне.
Стоит ли пытаться изменить матрицу 2D-проекции или мне нужно что-то еще делать?