我正在尝试在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每次都应该释放资源。我没有看过内存使用情况,并没有什么奇怪的。堆大小基本上保持相同的整个时间。 我应该看看的任何线索或可能是什么问题? 我会做更多,但我不知道如何调试此行为。 我会很高兴任何建议。 :)