2010-12-02 8 views
1

でテキストを描画しかし、私はテキストに影を追加したいと思い、私はFTGLライブラリを使用してOpenGLでテキストを描画だし、すべてがうまく動作します。私が試したことは黒の色と同じテキストを描画してから、このような通常の色(擬似コード)とその上のテキストを描画しますは、OpenGL + FTGLシャドウ

glColor3f(0, 0, 0); // outline color 
DrawText(x-1, y-1, str); 
DrawText(x+1, y-1, str); 
DrawText(x+1, y+1, str); 
DrawText(x-1, y+1, str); 
glColor3f(1, 1, 1); // primary color 
DrawText(x,y,str); 

しかし、私はテキストを5回描画する必要があり、それはまだ非常に良い見ていません。他の人よりも高品質で、いくつかの -

私はそれを達成するための方法の多くは、おそらくありますスクリーンショット

Text with shadow

答えて

3

上のようなものを取得したいと思います。

は、ここで私はどうなるのかです:

  1. は、メモリ内のグレースケールのピックスマップにテキストをレンダリングします。
  2. (おそらくQImageBlitzやImageMagickなどの高速ライブラリを使用して)ガウスぼかしを実行します。ぼかし半径は約2〜3ピクセルでなければなりません。
  3. はぼやけた画像に急トーンカーブを適用するので、輝度範囲[0.0、0.9]は、ほぼ0.0にマッピングされます。これは、それがぼやけていることを止めさせ、結果はテキストの "肥大化"バージョンです。

    alt text

  4. 影として、黒(アルファブレンディングをエミュレートするために、適切なブレンドモードを使用して)ことをレンダリング:トーンカーブは、次のようになります。次に、その上に通常の黄色のテキストを表示します(選択した小さなオフセットで)。

また、どのようにソフトなシャドウを使用するかによって、異なるトーンカーブを使用することもできます。線形のトーンカーブは非常に柔らかい影を与えます。

2

私は通常、このようにそれをやっている:

  1. セット色黒半透明にする、例えば(0,0,0,0.5)
  2. 9つのすべての方向でテキストを描画(側面に移動し、次に斜めに)
  3. fgテキストを描画します。

レンダリングリストと翻訳を使ってスピードアップできます。

ここを参照:http://i.stack.imgur.com/Dh68y.png

関連する問題