c++ - gwen + opengl 什么都看不到

标签 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

顺便说一句,我使用的是 OpenGL 2.1 而不是 3.0+

最佳答案

啊格温。令人沮丧的 GUI 库。

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

您遇到的问题很可能最终与我遇到的问题相同,或者您的自定义 OpenGL 渲染器可能存在问题。我不确定您是否了解 GWEN 或它的工作原理,但它在单一纹理上运行,为 GUI 提供皮肤。你在加载它吗?也许您的纹理加载器没有正确加载它。

尝试使用您的调试器并单步执行您的程序。感兴趣的领域是您尝试加载 GUI 皮肤的位置、分配 GWEN 可以使用的屏幕空间的位置,以及您实际尝试呈现 GUI 的时间。

关于c++ - gwen + opengl 什么都看不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12756474/

相关文章:

c++ - Visual Studio C 性能

c++ - 计算两个梯形的 'percentage matched'的最快方法

java - JDialog 无法 pack(),只是有时

opengl - 如何使用 3x3 单应性将立方体增加到特定位置

c++ - 如何在 GLFW 3 中创建 OpenGL 1.2 上下文

c++ - 如果有人能向我解释这里发生了什么

javascript - 从 Qt 中读取带有 "evaluateJavaScript"的 javascript 函数的返回值

java - 使用可视化 GUI 编辑器对学习 GUI 设计有害吗?

java - LibGDX Tablelayout 菜单不显示

c++ - OpenGL 着色器错误 1282