OpenGL アプリケーション内でカスタム GUI を作成しようとしています。TextRenderer クラスを使用してテキストをレンダリングしたいと思います。しかし、使ってみると、奇妙な動作に気づきます。アプリケーションは約1〜2分間スムーズに実行され、その後遅れ始め、実際には使用できなくなります. これは、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();
}
}
また、テキストレンダラーのプロパティを使用して、テキストの配置ボックスのサイズなどを決定しましたが、関連性のある点は薄いです。おそらく指摘されることの 1 つは、OpenGL 表示ループの呼び出しごとに UIElemetn を構築するべきではなかったということです。しかし、それが問題だった場合、最初からアプリの動作が遅くなると思います。そして、各 UI オブジェクトの処理が終わったら destroy() を呼び出します。そのため、TextRenderer は毎回リソースを解放する必要があります。私はメモリ使用量を見ていませんでしたが、それについて奇妙なことは何もありません。ヒープサイズは基本的にずっと同じままです。私が見なければならないもの、または何が問題なのか、手がかりはありますか? もっとやりたいのですが、この動作をデバッグする方法がわかりません。アドバイスをいただければ幸いです。:)