OpenGLで作業を始めたばかりですが、フォントシステムを実装した後に問題が発生しました。未字画のクワッドが暗く見える
私の計画は、いくつかのPathfinding Algorithmsを単純に視覚化することです。
現在、OpenGLのは、このようにセットアップされます(OnSize関数を手動でウィンドウの作成時に一度呼び出されます):
理論的にはvoid GLWindow::OnSize(GLsizei width, GLsizei height)
{
// set size
glViewport(0,0,width,height);
// orthographic projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0,width,height,0.0,-1.0,1.0);
glMatrixMode(GL_MODELVIEW);
m_uiWidth = width;
m_uiHeight = height;
}
void GLWindow::InitGL()
{
// enable 2D texturing
glEnable(GL_TEXTURE_2D);
// choose a smooth shading model
glShadeModel(GL_SMOOTH);
// set the clear color to black
glClearColor(0.0, 0.0, 0.0, 0.0);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.0f);
}
私が唯一の障害物とのラインを視覚化するuntexturedクワッドを使用しますので、私は、ブレンドする必要はありません等を使用してパスを描くことができます...フォントを除いて、すべてが未テクスチャになります。
フォントクラスには、このようなプッシュ/ポップ機能があります(私のFontシステムはNeHe私がずっと前に従っていたチュートリアル):
inline void GLFont::pushScreenMatrix()
{
glPushAttrib(GL_TRANSFORM_BIT);
GLint viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(viewport[0],viewport[2],viewport[1],viewport[3], -1.0, 1.0);
glPopAttrib();
}
inline void GLFont::popProjectionMatrix()
{
glPushAttrib(GL_TRANSFORM_BIT);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glPopAttrib();
}
問題: テキストを描画しないと、描画したいクワッドが見えますが、それらはかなり暗いので、一般的なOpenGL Matrix Propertiesに問題があるはずです。 Textを描画すると(フォント関連のpushおよびpop関数が呼び出されるため)、Quadは表示されません。
質問: この問題を解決するにはどうしたらいいのでしょうか。なぜなら、私はまだ始まった初心者/学生ですからです。
FYI:ウィンドウのサイズ変更ハンドラにビューポートと投影行列を設定するチュートリアルが表示されても、そのスタイルをコピーしないでください。これらのものは、「キャンバスを準備する」と考えられる他のすべてと同様に、描画機能に設定する必要があります。長期的に見ると、このアプローチはあなたに頭痛の種を救い、信頼してくれるでしょう。それを解決してくれてありがとう、 – datenwolf