2

複数のコンポーネントを持つ GUI を作成しましたが、これらのコンポーネントにテキストを入力する必要があります。

私の仕様:

  • できればLWJGL(OpenGL)を使用してください
  • 特別に複雑ではない
  • 他の外部ライブラリを使用しない (LWJGL ライブラリを除く)
  • かなり最適化する必要があります。非常に fps を集中的に使用する GUI で多く使用されます。
  • アンチエイリアスの可能性はありますか?
  • ほとんどの主要なオペレーティング システムで実行できる可能性があります

Javaでこれを行うにはどうすればよいですか?

4

2 に答える 2

1

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

于 2012-05-04T17:36:02.383 に答える
1

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

ビットマップ フォントは、2D GUI のテキストをレンダリングするだけの場合にのみ役立ちます。ただし、ビットマップ フォントを使用する場合、アンチエイリアスを行うことはできません。一方で、それらは非常に使いやすく、レンダリングも迅速です。

テクスチャ フォントはアンチエイリアシングを可能にしますが、やはり 2D GUI に最適です。ワールド スペースでテキストをレンダリングする場合、テクスチャのスケーリングが行われるため、多くのアーティファクトが発生します。テクスチャ フォントを使用するには、使用する特定のフォントの各文字の画像を含むテクスチャ アトラスを作成する必要があります (通常、文字セットを ASCII に制限する必要があります。そうしないと、テクスチャが大きすぎます)。 . AWT を使用して、必要なすべての文字を含む長方形の画像を作成できます。次に、そのキャラクターの適切なテクスチャ座標を使用してクワッドをレンダリングすることで、キャラクターをレンダリングできます。輝度アルファ テクスチャを使用して、テキストを入れたい色とブレンドできるようにすることをお勧めします。

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

于 2012-05-04T21:42:39.103 に答える