0

横向きで(常に)実行され、描画にOpenGLを使用するiOSアプリがあります。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.xで、およびはからまでの範囲self.player.yGLfloat変数-3.0fです3.0f

しかし、私が見るのは青い十字だけです。
スクリーンショット

私はglOrthofOpenGLに正しいアスペクト比を使用させるために使用します。呼び出しをコメントする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 に答える