2013-04-28 14 views
5

私は2D OpenGL実装を使用してこのシステムでデータを表示するこの会社で作業を始めました(Windows上で動作します)。システム全体はC++ Builder 2007を使用して構築されました。OpenGLのベクトルベースのフォント

Example of the view

私は、Windowsが行うように、彼らは同じフォントファイルを使用して知っているから:事は、私はテキストがビットマップであるため、たまたまだと思う彼らは印刷するすべてのテキストあなたが拡大するとピクセル化がある、です。なぜこのようなことが起こったのかここで尋ねました。私が得た答えは、OpenGL上のフォントは難しいと言っていました。

私の質問は、テキストをベクターにする簡単で効果的な方法はありますか(写真の行と同じ方法ですか?)したがって、カメラをズームすると、ピクセル化する。私はOpenGLの知識はほとんど持っていません。正しい方向に向かって私に指摘するためのガイドやチュートリアルがあれば、とても感謝しています。基本的にどんな素材でも大丈夫です。

+1

彼がOpenGLで持っていた主な問題は、フォントが非常に一貫性のないプラットフォームで処理されている可能性が高いことです。そのためのサポートはほとんどありませんでしたが、おそらくサードパーティのライブラリがこれにあたります(SDLとGLEWはIIRCをサポートします)。 – Polar

+0

私は、これらのライブラリを探していきます。ありがとう! – dccarmo

+0

@AkiSuihkonenあなたがそれらを見つけるなら、ここで共有してください!ありがとう! – dccarmo

答えて

10

OpenGLのテキストレンダリングライブラリのほとんどは、フォントのビットマップを作成します。これは、ハッキングを行わない限りスケーリングやエイリアシングに問題が生じることを意味します。一般的なハックの1つは、Valveのapproachです。距離フィールドalgoを使用してフォントのビットマップを生成し、レンダリング時にスケールアウトしたテキストの輪郭を滑らかにするのに役立ちます。 Hereには、Distanceフィールド生成のC++実装があります。

NVidiaのベンダー固有のハードウェアを使用している場合は、NVidia Pathエクステンションを試すとGPUで直接グラフィックスをレンダリングできます。覚えておいてください、それはNVidiaの唯一のものです。 しかし、一般に、署名された距離フィールドベースのアプローチは最もスムーズかつ簡単に実装できます。

Btw、freetype-glは、バルブのアプローチと最新のパイプラインを使用しています。

+0

説明をありがとう、マイケル。今私には明らかです。私は確かにすべてのリンクをチェックしますが、NVidiaのソリューションもあまりにも具体的ですが、私はちょっとした見解を得るために読んでいます。 – dccarmo

+0

ベクターテクスチャマップの方法もあります。http://alice.loria.fr/index.php/[email protected] – datenwolf

-1

OpenGLでフォントを使用する際の問題点は、プラットフォーム間で一貫して処理されず、最小限のサポートしかないことです。 OpenGL用のヘルパーライブラリ(SDLが気になる)を使いたい場合、この動作はラップされる可能性があります。つまり、使用するのに適したフォントファイルを提供するだけです。

+3

GLEWは何もしませんフォントで。 –

+0

@NicolBolasヘルパーライブラリの例として使っているだけで、フォントをサポートしているかどうかは確かではありませんでした。 – Polar

+1

それから質問に答えていないので(フォントのレンダリングについて)、答えからそれを削除してください。 –

4

OpenGLでフォントをレンダリングするためのfreetype-glライブラリを試すことができます。

+0

明日試してみると、このライブラリは解決策のようですありがとう! – dccarmo