あなたがやりたいことは、単純なゲームで 2D HUD を描画するときや、永続的な背景だけを描画するときと似ているように思えます。私は専門家ではありませんが、比較的最近それを行いました。やりたいことは、投影行列を正射投影に変更し、クワッドをレンダリングしてから、以前の投影に戻すことです。これはマトリックス スタックで行うことができ、どのカメラからも完全に独立しています。
だから、最初に:
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
int w = glutGet(GLUT_WINDOW_WIDTH);
int h = glutGet(GLUT_WINDOW_HEIGHT);
gluOrtho2D(0, w, h, 0);
これにより、新しい射影行列が射影スタックにプッシュされます (このプロジェクトでは glut を使用していましたが、通常の OpenGL に変換する必要があります)。次に、ウィンドウの幅と高さを取得し、gluOrtho2D を使用して正投影を設定します。
次:
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
// Draw your quad here in screen coordinates
ここでは、新しいきれいなマトリックスをモデル ビューにプッシュするだけです。これを行う必要がない場合があります。
最後に:
glPopMatrix() // Pops the matrix that we used to draw the quad
glMatrixMode(GL_PROJECTION);
glPopMatrix(); // Pops our orthographic projection matrix, which restores the old one
glMatrixMode(GL_MODELVIEW); // Puts us back into GL_MODELVIEW since this is probably what you want
これが役立つことを願っています。おわかりのように、目の位置を使用する必要はありません。これは主に、ウィンドウに完全に適合する新しい正投影を使用する場合、これは無関係であるためです。ただし、これが他の描画呼び出しの後に実行される場合、クワッドが後ろに配置されない場合があります。
編集:Boojumが示唆するように、深度テストをオフにして深度バッファをクリアすることも役立ちます.