2012-10-06 81 views
0

我想用GWEN在我的opengl场景上绘制一些GUI元素。它似乎已经正确设置,但gwen没有任何实际上正在绘制(至少明显)。我使用的是自定义渲染器,它本质上是GWEN的stock opengl渲染器,但是具有用于加载纹理的不同功能。和OpenGL ::开始()和OpenGL ::结束()替换这些:gwen + opengl看不到任何东西

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+

回答

2

Ah GWEN。令人沮丧的GUI库。

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

您遇到的问题最终可能会与我的问题相同,或者您的自定义OpenGL渲染器可能存在问题。我不确定你是否知道GWEN的很多知识,或者它是如何工作的,但是它运行在一个纹理上,它可以使GUI呈现。你在加载吗?也许你的纹理加载器没有正确加载它。

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

+0

谢谢,我检查使用gDebugger和纹理加载罚款。我会进一步研究。你有任何代码可以帮助我吗? – PgrAm

+0

@PrrAm截至目前我还没有,因为除了最初尝试使用引擎工作外,我还没有亲自使用过GWEN。只要检查GUI的绘制位置,我怀疑它不是绘图的问题,这是绘制在哪里的问题。 – Ner0