gwen + opengl看不到任何东西

时间:2012-10-06 03:34:36

标签: c++ user-interface opengl

我正在尝试使用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

BTW我正在使用OpenGL 2.1而不是3.0 +

1 个答案:

答案 0 :(得分:2)

啊GWEN。令人沮丧的GUI库。

当我开始使用它,并将它集成到我们在学校写的引擎中时,我遇到了与你相同的问题,但使用了股票OpenGL渲染器。原来它被定位错误,调用glLoadIdentity()来重置单位矩阵似乎解决了它。

您遇到的问题可能最终与我的问题相同,或者您的自定义OpenGL渲染器可能存在问题。我不确定你是否了解GWEN或它是如何工作的,但是它运行在单个纹理上,可以显示GUI。你装的是吗?也许你的纹理加载器没有正确加载它。

尝试使用调试器并单步执行程序。感兴趣的区域是您尝试加载GUI外观的地方,您正在分配GWEN可以使用的屏幕空间,以及当您实际尝试渲染GUI时。