0

DirectX Documentation の Font クラスを見て、this/these question/answersを見ましたが、私のニーズを満たしていませんでした。

「C++ DirectX 9 Font library」を検索してみましたが、有用な結果は得られませんでした。

たとえば、TTF フォント (Arial など) を読み込んで画面に描画できる DX9 フォント ライブラリはありますか?

私が使用している現在のクラスは、私のニーズのほとんどを満たしていますが、地獄のようにバグがあります:((つまり、情報を描画するサードパーティのアプリケーションをaltタブで押すと、クラッシュし、何とかDLLにありません)。

4

2 に答える 2

1

独自のビットマップ フォント レンダラーを作成する時が来ました。必要になるだろう:

  • 優れたフォントローダー ( FreeType )
  • テクスチャ アトラス: すべての文字を含む大きなテクスチャと、各文字のメタデータを保持する辞書
  • ある種のスプライト バッチ: 効率的なスプライト描画

ステップバイステップ:

  1. FreeType: フォント ファイルを読み込み、各文字を小さなビットマップにレンダリングします。
  2. アトラスの作成: すべての小さなビットマップを大きなアトラス テクスチャにマージ (ブリット) し、各文字の属性 (座標、サイズ、カーニング、その他のもの) を「アトラス ディクショナリ」に格納します。
  3. スプライトのバッチ処理を使用してアトラスから文字を描画します (辞書を使用)

まあ、最初は、FreeType からキャラクターのビットマップを取得して直接描画するようなものから始めることができますが、パフォーマンスは非常に低くなると思います。

更新: このようなトピックに関する小さな例を書くのは難しいですが、:

  • フォント読み込みライブラリについては、そのドキュメントを読むことができます
  • アトラスについては、 Chad Vernon のブログを見ることができます。C# ですが、構文は C++ コーダーにとって理解しやすいものです。BitmapCharacterSet彼のコードには atlas があります。
  • スプライトのバッチ処理について: Frank Lunaの書籍やソース コードを確認してください。彼の小さなユーティリティ ライブラリには、フォント レンダラーも含まれています。
于 2013-04-23T20:38:02.673 に答える
0

TTF フォントをビットマップに変換する BMFont ( http://www.angelcode.com/products/bmfont/ ) を参照してください。次に、次のコードでレンダリングできます: http://www.angelcode.com/dev/bmfonts/

ただし、すぐに使用できるライブラリではありません。

于 2013-04-19T14:31:48.240 に答える