1

OpenGL ES でパースペクティブを設定するのに問題があります。誰にもヒントはありますか?私のオルソ プロジェクトは次のようになりました。

glFrustumf で同様の設定を行うにはどうすればよいですか?

4

6 に答える 6

1

これがiPhoneとOpenGL ESに関するものであると仮定すると、gluLookAtのようなOpenGL ESにはそのようなものはありません。それはどのように実装されていますか?

カメラの位置は (0,0,0) であり、正方形もその z 平面上にあることに注意してください。glLoadIdentity() を呼び出した場合、glTranslatef(0.0f, 0.0f, 0.0f) は変更を行いません。

おそらく、セットアップメソッドのほとんどのセットアップ部分を移動することを検討できます。例: GlEnable 通話とカメラ設定。Projection または Modelview マトリックスを操作するには、glMatrixMode が使用されていることを確認してください。セットアップは次のようになります。

- (void) setupView {
  glViewport(0, 0, backingWidth, backingHeight);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  // think about the box where all the vertices are.
  glFrustum(-8.0f, 8.0f, -12.0f, 12.0f, -8.0f, 20.0f); 
  // .. all sort of glEnable
}

drawView で、頂点に何らかの変換を適用して、頂点がカメラの前にあることを確認します。頂点の色もあります。

- (void) drawView {
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  glTranslatef(0, 0, 5.0f); // move in front

  glVertexPointer(3, GL_FLOAT, 0, squareVertices);

  // maybe you want to attach colors to your vertices
  const GLubyte squareColors[] = {
            255, 255,   0, 255,
            0,   255, 255, 255,
            0,     0,   0,   0,
            255,   0, 255, 255,
  };
  glColorPointer(4, GL_UNSIGNED_BYTE, 0, squareColors);
  glEnableClientState(GL_COLOR_ARRAY);

  glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
  // .. some other loadidentity and translate and vertex pointer setup and draw
}

OpenGL ES リファレンスも役に立つかもしれません: http://www.khronos.org/opengles/sdk/1.1/docs/man/

于 2009-03-18T11:58:02.553 に答える
1

私はiPhoneでopengl esの投影の問題をいじっています。上記のサンプル コードの glfrustum のパラメーターは機能しません (-8.0f、20.f)。無効なパラメーター エラーが発生します。zNear は正である必要があるようです。

これらのパラメーターを変更してもレンダリングにまったく影響がない理由を突き止めようとして頭を悩ませていたので、知識を共有したかっただけです!

于 2009-04-16T09:53:38.267 に答える
0

Here is a post with a perspective function using glFrustumf and how to convert a glOrthof call to it, perhaps it helps.

Note that you perhaps might have to call glTranslatef afterwards to center the camera.

于 2009-03-17T09:30:33.470 に答える
0

gluLookAt は openGlEs の一部ではありませんが、ほとんどの人はソースを取得してプロジェクトにドロップします。多くのコードではありません。少なくとも、glFrustum で何が起こっているかを示す良い例になります。

于 2009-04-16T07:18:21.150 に答える