0

GWEN を使用して、opengl シーンの上にいくつかの GUI 要素を描画しようとしています。正しく設定されているように見えますが、実際には gwen から何も描画されていません (少なくとも視覚的に)。基本的にGWENのストックopenglレンダラーですが、テクスチャをロードするための機能が異なるカスタムレンダラーを使用しています。OpenGL::Begin() と OpenGL::End() は次のように置き換えられます。

    void coRenderer::Begin()
    {
        glUseProgram(0);
        glDisable(GL_DEPTH_TEST);

        glDepthMask(0);

        glEnable(GL_BLEND);

        glMatrixMode(GL_PROJECTION);                // Select The Projection Matrix
        glPushMatrix();                             // Store The Projection Matrix
        glLoadIdentity();

        glOrtho(0, screen->w, screen->h, 0, -1, 1 );

        glMatrixMode(GL_MODELVIEW);

        glActiveTexture(GL_TEXTURE0);
    }

    void coRenderer::End()
    {
        Flush();

        glMatrixMode(GL_PROJECTION);                // Select The Projection Matrix
        glPopMatrix();                              // Restore The Old Projection Matrix

        glDisable(GL_BLEND);

        glEnable(GL_DEPTH_TEST);
        glDepthMask(1);

        glEnable(GL_TEXTURE_2D);
    }

gwen の opengl レンダラーのコードは次のとおりです。

http://gwen.googlecode.com/svn/trunk/trunk/gwen/Renderers/OpenGL/OpenGL.cpp

ところで、私は3.0+ではなくOpenGL 2.1を使用しています

4

1 に答える 1

2

ああグウェン。あのイライラするGUIライブラリ。

私がそれを使い始めて、学校で書いたエンジンに統合したとき、私はあなたと同じ問題を抱えていましたが、ストックの OpenGL レンダラーを使用していました。glLoadIdentity() を呼び出して恒等行列をリセットすると、それが解決されたように見えました。

あなたが抱えている問題は、私が抱えていたものと同じになる可能性があります。または、カスタム OpenGL レンダラーに問題がある可能性があります。GWEN やその仕組みについてよく知っているかどうかはわかりませんが、GUI をスキンする単一のテクスチャで実行されます。それを読み込んでいますか?テクスチャ ローダーが正しくロードしていない可能性があります。

デバッガーを使用して、プログラムをステップ実行してみてください。関心のある領域は、GUI スキンをロードしようとしている場所、GWEN が使用できる画面スペースを割り当てている場所、および実際に GUI をレンダリングしようとしている時期です。

于 2012-10-06T09:40:51.030 に答える