4

画面にテキストをレンダリングしようとして、3D アプリケーションに取り組んでいます。

しかし、テキストが 10 文字を超えると、FPS が 2 に低下し、本当に面倒です。

私のプログラムは glutPostRedisplay() 関数をよく使用します。これが確実に遅くなる理由です。

glutBitmapCharacter() を使用して遅延なくプログラムにフォントを表示させる方法はありますか。

win7 x64 で VC++ 2008 を使用しています。

PS: Freetype for OpenGL を VC++ にインストールしようとしましたが、最終的にあきらめました。また、VC++ 2008 に任意のフォント ライブラリをインストールするための「ばか」なガイドを教えていただければ幸いです。

4

1 に答える 1

1

ベクター フォントが不要な場合、テキスト表示の簡単な方法は、ビットマップ フォント テクスチャ (固定ピッチ スタイル) を使用することです。GDI からレンダリングして自分でフォント イメージを作成するか、MSPaint で手動で編集するか、inet からダウンロードすることができます。

単純なテキストの場合、私は現在 16x16 ピクセルのフォントを使用しています... 16x16 文字の配列として編成された画像で (テクスチャは正方形のサイズにする必要があるため、拡張機能を使用する必要はありません)。

ブレンディングを使用すると、文字のようなスプライトを実現できます。また、glColor を使用すると、テキストの色やアルファを変更できます。この方法で最も見栄えの良いテキスト レンダリングを実現するには、非透視投影マトリックスとテクスチャ フィルタリング GL_LINEAR を使用します。

もちろん、char およびテキスト描画関数をコーディングする必要がありますが、複雑ではありません (char は単純な四角形であり、ASCII からテクスチャ座標を計算するだけで済み、テキストは char の呼び出しと位置の更新に対して単一です)。

于 2013-08-05T17:31:40.787 に答える