使用awt TextRenderer时,3D jogl应用程序会挂起

时间:2014-09-26 22:24:47

标签: java text rendering jogl textrenderer

我正在尝试在OpenGL应用程序中创建自定义GUI。我想使用TextRenderer类为我呈现文本。但是当我使用它时,我注意到一种奇怪的行为。该应用程序平稳运行大约一两分钟,然后开始滞后,实际上无法使用。我发现只有当我把TextRenderer放到位时才会发生这种情况。所以我必须使用TextRenderer。我查看了我的代码,代码,并没有找到任何明显的代码。

我的架构是这样的:

class BaseUIElement
{
    protected TextRenderer textRenderer;

    //something something

    public BaseUIElement ()
    {
        //something something

        this.textRenderer = new TextRenderer(new Font("SansSerif", Font.BOLD, 16) );
    }

    public final void Render( GL2 gl)
    {
        //setting ortho projection, binding textures for menu and stuff

        this.drawContent();

        //restoring OGL states to before
    }

    protected void drawContent()
    {
        //box itself drawing magics

        textRenderer.beginRendering(...);            

        this.textRenderer.setColor(...);

         for (String line : textLines) 
         {
             this.textRenderer.draw( ... );
         }

         this.textRenderer.endRendering();
    }

    public void destroy()
    {
        //free my stuff

        this.textRenderer.dispose();
    }
}

我还使用了文本渲染器的属性来确定文本对齐框的大小和内容,但我点了相关的瘦身。 您最有可能指出的一件事是,我不应该在每次OpenGL显示循环调用中构造UIElemetn。但如果那是问题所在,我希望应用程序从一开始就运行缓慢。在完成每个UI对象之后,我会调用destroy(),因此TextRenderer每次都应该释放资源。我没有看过内存使用情况,并没有什么奇怪的。堆大小基本上保持相同的整个时间。 我应该看看的任何线索或可能是什么问题? 我会做更多,但我不知道如何调试此行为。 我会很高兴任何建议。 :)

0 个答案:

没有答案