使用glOrthof时,我看到的只是一个十字架

时间:2011-05-22 10:07:51

标签: c ios opengl-es landscape aspect-ratio

我有一个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.xself.player.yGLfloat变量的范围从-3.0f3.0f

但是,我看到的只是一个蓝色十字架:
screenshot

我使用glOrthof使OpenGL使用正确的宽高比。当我评论glOrthof来电时,我得到了这个结果(浅蓝色的线应该形成正方形,而不是矩形):
half-good


我尝试了一切,从交换宽度和高度,更改glOrthof调用的参数,但没有任何帮助。有人可以帮助我,或解释我做错了什么?提前致谢。 :)

1 个答案:

答案 0 :(得分:2)

试试这个:

GLfloat aspect=width/height;
glOrthof(-aspect, aspect, -1.0, 1.0, -1.0f, 1.0f);