【问题标题】:When using glOrthof, all I see is a cross使用 glOrthof 时,我看到的只是一个十字架
【发布时间】:2011-05-22 19:20:45
【问题描述】:

我有一个横向运行的 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

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

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


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

【问题讨论】:

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


    【解决方案1】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多