OpenGL上に構築されたGUIを実装しています。各GUIにテキストレンダリングがあるという問題が発生しました。OpenGLでテキストをレンダリングするいくつかの方法を知っていますが、そのうちのどれがGUIに最も適しているのか疑問に思います。
通常、GUIには、静的とライブの2種類のテキストがあります。静的は非常に簡単です。TTFをテクスチャにレンダリングして、それを忘れることができます。私をもっと悩ませているのは「ライブ」テキストです。コンソールやマルチプレイヤーゲームのライブチャットを想像してみてください。
私はいくつかのオプションを考えました:
- 特別な場合はありません-テキストが変更されるたびにテクスチャをレンダリングしてロードします。実際に新しいテキストが表示されたときにのみ再レンダリングすることを念頭に置き、大きなテキストを小さな部分に分割しようとします(チャットラインごとなど)。ただし、これでも、スコアラインが常に変化する場合や、「キャラクターごと」にレンダリングされるイントロテキスト(一部のSFゲームで見られるタイプライタースタイル)などの場合は、ハングアップしたままになります。
- 文字ごとのクワッド-これも人気のあるソリューションのようです。ASCIIテーブルを使用してテクスチャを準備し、テクスチャ付きのクワッド文字をレンダリングします。しかし、私はそのようなソリューションの効率について深刻な疑問を持っています。それを速くする方法のヒントも歓迎されます。
- ハイブリッドソリューション-しかし、それをきれいに実装する方法がわかりません
したがって、問題は、OpenGLでテキストを効率的にレンダリングする方法です。
これが役立つ場合は、STL /Boostを多用するC++でコーディングし、GForce6以降のグラフィックカードを目指しています。