5

画像から始めます:

ここに画像の説明を入力

上の画像は 2 つの異なる方法で作成されたテキストを示しており、どちらも同じ種類のフォント (Arial、太字、サイズ 11) を使用しています。

下のものは画像編集プログラムで作成されたもので、上のものは私の OpenGL アプリケーションで作成されたものです。より正確には、FTExtrudeFontFTGL ライブラリから使用します。

font_ptr font(new FTExtrudeFont(filename.c_str()));

私の質問は、なぜこのように描かれているのですか?この理由は、サイズ変更アルゴリズムが異なる可能性があると思いますが、そうである場合、OpenGL アプリケーションでこの見栄えの良いフォント (一番下のフォント) を実現するにはどうすればよいでしょうか?

編集:

フォントをレンダリングするには、次の 1 つの関数のみを呼び出します。

font->Render(text,         // Text to be displayed
             -1,           // Line length, which by default is left as -1
             pos);         // Position in which to draw text
4

1 に答える 1

3

これは、OpenGL のテクスチャ サンプリングが原因のようです。描画しているテクスチャ (この場合はフォント) が、描画するクワッドと同じサイズでない場合に発生します。

簡単な解決策: テクスチャのサイズが画面に描画される領域と一致していることを確認してください。14px フォントを 12px 領域にレンダリングせず、12px フォントまたは 14px 領域を使用します。

あなたの質問では、フォントが「サイズ 11」であると述べています。FTGL ライブラリの詳細はわかりませんが、描画できる特定の文字列の最適な寸法を教えてくれる呼び出しがあると思います。これらを計算するために独自の数学を使用しないでください。ライブラリを使用してください。寸法が正しい限り、問題は発生しないはずです。

于 2013-01-01T14:12:56.867 に答える