0

我有一个横向运行的 iOS 应用程序(总是),并使用 OpenGL 进行绘图。我的draw方法中有这段代码:

  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

但是,我看到的只是一个蓝十字:
截屏

glOrthof用来让 OpenGL 使用正确的纵横比。当我评论glOrthof调用时,我得到了这个结果(浅蓝色线应该形成正方形,而不是矩形):
半好


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

4

1 回答 1

2

尝试这个:

GLfloat aspect=width/height;
glOrthof(-aspect, aspect, -1.0, 1.0, -1.0f, 1.0f);
于 2011-05-22T11:10:58.303 回答