2012-05-04 14 views
2

私は複数のコンポーネントを持つGUIを作成しましたが、これらのコンポーネントにテキストを取り込む必要があります。JavaでのTrueTypeフォントレンダリング?

マイ仕様:

  • 好ましくはLWJGLを使用していますが(OpenGLの)
  • 非常に複雑ではありません
  • (LWJGLライブラリをバー)他の外部ライブラリを使用しませんする必要がありますかなり最適化されており、非常にfpsの集中的なGUIで多く使用されます
  • アンチエイリアスの可能性はありますか?
  • はおそらく、私はJavaでこれを行うことができますどのようにほとんどの主要なオペレーティングシステム

上で実行する能力を持っていますか?

+0

特に、このような特定のリクエストに対して、あなたが試したことやあなたが書いたコードを投稿するのは忘れてしまいました。 – Chris

+0

@クリス私は何かを試したことはありません。なぜなら、どこから始めなければならないのか、何をすべきか分かりません。私は私の質問をGoogleで検索しましたが、有益なウェブサイトはありません。それは古くなっています。 –

+0

@Chris * "あなたは言いました.." * OPはまた質問を忘れました。 - OP:質問がありますか? –

答えて

0

フォントを管理するのにSVG、特にBatikを使用することを考えます。私はこれで自分自身でかなり多くのことをやっています。それはやや学習曲線です。私は簡単に始めて、パフォーマンスについて心配する前に必要な特定の機能を見つけることができます。しかし、あなたがより明確なアイデアを与えるまでは、私たちがもっと助けることができないと確信しています。

+0

一見して、私はバティックが追加の図書館であることを知ることができるので、それは疑問ではないと思います。私は、特にルックス、アンチエイリアスの可能性、実際のフォントのMAYBE変更などの好みを中心に、特定の機能を念頭に置いていませんか? –

1

ビットマップフォント、テクスチャフォント、ベクターフォントの3つのオプションがあります。

Bitmap fontsは、2D GUIのテキストをレンダリングするだけの場合に便利です。ただし、ビットマップフォントを使用する場合は、アンチエイリアシングを実行できません。一方、彼らは使い方が簡単で、レンダリングも素早いです。

テクスチャフォントではアンチエイリアスが可能ですが、2Dグラフィックスの場合にも最適です。ワールド空間でテキストをレンダリングする場合は、テクスチャのスケーリングが行われるため、多くのアーティファクトが発生します。テクスチャフォントを使用するには、使用する特定のフォントの各文字のイメージを含むテクスチャアトラスを作成する必要があります(通常、文字セットをASCIIに制限したい場合は、テクスチャが大きすぎます) 。 AWTを使用して、必要なすべての文字を含む長方形のイメージを作成できます。次に、その文字の適切なテクスチャ座標で四角形をレンダリングすることによって、文字をレンダリングすることができます。ルミナンスアルファテクスチャを使用して、テキストを表示する色とブレンドできるようにすることをお勧めします。各文字の表示リストと各文字列の表示を使用して最適化することはできますが、問題が発生しますカーニングなどを使用します。

ベクターフォントは、ワールドスペースでテキストをレンダリングする場合に最適な結果をもたらします。彼らはあなたに完全なフォントレンダリングを提供します。カーニングが必要ですがレンダリングするのにはコストがかかります。私の通常のアプローチは、レンダリングしたい文字列ごとにパス(AWTを使用)を作成し、そのパスを平坦化してから、GLUテッセレータを使用してトレースします。これにより、最適なパフォーマンスを得るためにVBOに入れることができる三角形、三角形のストリップ、三角形のファンがたくさんあります。次に、VBOの適切なレンダリングコマンドを発行して、その文字列をレンダリングできます。これをさらに最適化するには、各文字列の表示リストを使用します。そうすれば、文字列ごとに1つのコマンドを送るだけで済みますが、もちろんこれは他の方法よりも高価になります。

関連する問題