У меня есть приложение для iOS, которое работает в альбомной ориентации (всегда) и использует OpenGL для рисования. У меня есть этот код в моем методе рисования:
GLfloat width = self.frame.size.width; // 480
GLfloat height = self.frame.size.height; // 320
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-width / 2, width / 2, -height / 2, height / 2, -1.0f, 1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(160.0f, 240.0f, 0.0f);
glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
glScalef(1.0f, -1.0f, 1.0f);
glMatrixMode(GL_PROJECTION);
glTranslatef(self.player.x, self.player.y, 0.0f);
Где self.player.x
и self.player.y
- это GLfloat
переменные в диапазоне от -3.0f
до 3.0f
.
Однако все, что я вижу, это синий крестик:

Я использую glOrthof
, чтобы заставить OpenGL использовать правильное соотношение сторон. Когда я комментирую вызов glOrthof
, я получаю такой результат (голубые линии должны образовывать квадраты, а не прямоугольники):

Я перепробовал все, от изменения ширины и высоты до изменения параметров вызова glOrthof
, но ничего не помогло. Может ли кто-нибудь помочь мне или объяснить, что я сделал не так? Заранее спасибо. :)