При использовании glOrthof я вижу только крест - PullRequest
0 голосов
/ 22 мая 2011

У меня есть приложение для 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.

Однако все, что я вижу, это синий крестик:
screenshot

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


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

1 Ответ

2 голосов
/ 22 мая 2011

Попробуйте это:

GLfloat aspect=width/height;
glOrthof(-aspect, aspect, -1.0, 1.0, -1.0f, 1.0f);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...