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