基本的に私が理解しているのは、オブジェクトがXY平面にあるときに、正投影と同じ画像を生成する遠近法マトリックスが必要なことです。
それでは始めましょう:あなたはXY平面に平面を描きたいと思っていて、それを持っていましたgluOrtho2D(-w, w, -h, h);
(非対称正投影は、必要に応じて少し難しいです、そう言ってください)。あなたが今する必要があるのは:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(2 * atan(h / 2) * 180.0 / PI, w / h, 1, 3);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0, 0, -2);
ここで行ったことは、正投影で表示されたXY平面のセクションの投影ビュー錐台の中心を一致させることです。
投影錐台といくつかの数学のグラフを取り、あなたはこれを自分で行うことができます:)
念のため、古い質問に対する答えをここに残しておきます。
オルソプロジェクションまたはパースペクティブプロジェクションがあります。あなたは1つを決める必要があります。どの軸を回転しても遠近感は得られません。
投影モードを変更するためだけにプログラム全体を変更する必要があるのはなぜですか?
考えられる解決策の1つ:さまざまなマトリックスモードなどを備えた古いGLを想定しています。
glMatrixMode(GL_PROJECTION); //switch to projection matrix mode
glPushMatrix(); //push the old matrix
glLoadIdentity();
//apply the perspective projection
//do your rendering
glPopMatrix(); //pop the old matrix
新しいGLスキームでは、これのほとんどを自分で行う必要がありますが、それでも簡単なはずです。