4

私は OpenGL ES を使用して 2D ゲームに取り組んでいます。正投影を使用すると、2D が簡単になるためです。ここで、単純な 3D 効果を作成したいと思います。たとえば、Y 軸を中心にスプライトを回転させます (カバー フローのようなもの)。私の理解が正しければ、これはオルソ図法ではできません。残りのコードを台無しにすることなくそれを行うことは可能ですか? フレームの途中で投影を切り替えるように、現在のフレーム画像を背景として扱い、背景の上に 3D のものを描画しますか?

4

1 に答える 1

6

はい、可能です。古い射影行列を保存し、新しい射影行列をロードし、完了したら古い射影行列を復元するだけです。

void DrawScene()
{
  Draw2DStuff();

  glMatrixMode(GL_PROJECTION);
  glPushMatrix();  // Save old projection matrix
  gluPerspective(...);  // Load new projection matrix

  Draw3DStuff();

  glMatrixMode(GL_PROJECTION);
  glPopMatrix();  // Restore old projection matrix
}

深度バッファには注意してください。2D レンダリングと 3D レンダリングを切り替えるときに、正しく描画されるように深度バッファ設定をいじる必要があるかもしれません。

于 2008-12-02T20:33:05.773 に答える