4

opengl3dシーンに文字列を印刷するには助けが必要です。モデルビュー行列と射影行列の使用に問題があります。私が理解しているように、投影マトリックスはシーンのセットアップに使用され、モデルビューマトリックスはシーン内のオブジェクトの描画と変換に使用されます。したがって、3Dシーンに何かをペイントするには、次の手順が最も実行されることを理解しています。

  • 3Dシーンの投影行列を設定します
  • 3Dシーンのモデルビューマトリックスを設定する
    • openglのものを描く
  • 2Dオーバーレイの投影行列を設定します
  • 2Dオーバーレイのmodelviewマトリックスを設定する
    • hud用のopenglのものを描画します

これは正しい手順ですか?

4

1 に答える 1

3

2Dレンダリングの場合、キャンバスを作成するときの投影マトリックスと、テキストの位置を表すmovelviewを考えることができます。次のような正射影を設定します。

glOrtho(0.0F、windowWidth、0.0F、windowHeight、-1.0F、1.0F);

この投影法では、各単位は1ピクセルを意味します(glTranslate2f(120.0、100.0)は、テキストをピクセル(120、100)に配置します。この投影法は、画面の左下隅に(0,0)をマップします。あなたができる左上隅にそれをマップします:

glOrtho(0.0F、windowWidth、windowHeight、0.0F、-1.0F、1.0F);

テキストのレンダリング方法に関しては、OpenGLはデフォルトでそれをサポートしていません。つまり、フォントレンダリングライブラリを作成するか、既存のライブラリを使用する必要があります。その前に、テキストレンダリングのニーズを念頭に置く必要があります。フラットですか、それとも3Dですか。静的または変換(スケーリング、回転)などになります。

ここでは、長所と短所およびライブラリを使用したopenglテキストレンダリング手法に関する調査を見つけることができます: http ://www.opengl.org/archives/resources/features/fontsurvey/

FTGLを使用してTTFフォントをレンダリングし始めましたが、libがゲームのパフォーマンスを破壊していました。そこで、私は自分のフォントライブラリを実装することに決め、TTFよりも優れていないテクスチャフォントを使用しましたが、それは私のニーズには問題ありませんでした。

私はこのプログラムを使用しました:http : //www.angelcode.com/products/bmfont/ TTFフォントを取り、レンダリングに使用するテクスチャの各文字の位置、サイズ、およびパディングを含むテクスチャとファイル記述子をエクスポートします。

お役に立てば幸いです。

于 2012-05-31T23:03:48.077 に答える