格温+普朗格什么也看不见

gwen + opengl can't see anything

本文关键字:什么 看不见 格温      更新时间:2023-10-16

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

Ah GWEN.那个令人沮丧的 GUI 库。

当我开始使用它并将其集成到我们在学校编写的引擎中时,我遇到了与您相同的问题,但是使用库存的OpenGL渲染器。事实证明它的位置错误,调用 glLoadIdentity() 重置身份矩阵似乎可以解决它。

您遇到的问题

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

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