これが問題です。ビューポート全体に塗りつぶされた背景として画像をロードしたいと思います。この背景は、カメラがどこを向いていても、常にカメラを向いている必要があります。まず、当然、背景としてテクスチャを使用すると思います。私のコードは次のとおりです。
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0,1,0,1,0,1);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glBindTexture(GL_TEXTURE_2D, myimage.GetID());
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2f(0, 0);
glTexCoord2f(1, 0); glVertex2f(1, 0);
glTexCoord2f(1, 1); glVertex2f(1, 1);
glTexCoord2f(0, 1); glVertex2f(0, 1);
glEnd();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glDisable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
私を信じてください、myimageは写真をテクスチャにロードできるCIMAGEクラスであり、うまく機能します。ただし、何らかの理由で、私のアプリケーションはテクスチャを長方形にロードできません。(この問題については、ここをクリックして説明しました)その結果、ビューポートの周囲に長方形のフレームしか表示されません。
だから、私は別の解決策を考え出します。
テクスチャの代わりにglDrawPixelsを使用します。私のコードは以下の通りです:
glRasterPos2i(0, 0);
glDrawPixels(myimage.GetWidth(), myimage.GetHeight(), (myimage.GetBPP() == 24)?GL_RGB:GL_RGBA, GL_UNSIGNED_BYTE,
myimage.GetData());
写真が登場!しかし、写真はいつも私のカメラに向いているとは限りませんでした。特定の方向にのみ表示されます。シーン内のオブジェクトのように、背景が常にカメラに面しているわけではありません。
では、glDrawPixelsを使用して背景を実装する方法を知っている人はいますか?
ちなみに、この背景は3Dシーンに配置されたオブジェクトではないと思います。したがって、看板は私の解決策ではないかもしれません。この場合も、この背景はビューポート全体を塗りつぶし、常にカメラに面しています。