1

FTGL ライブラリを使用して OpenGL でテキストを描画していますが、すべて正常に動作しますが、テキストに影を追加したいと考えています。私が試したのは、同じテキストを黒色で描画し、その上に次のような通常の色でテキストを描画することです(疑似コード):

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 回描画する必要がありますが、それでも見栄えがよくありません。

スクリーンショットのようなものを取得したい

影付きのテキスト

4

2 に答える 2

3

それを達成する方法はおそらくたくさんあります - いくつかは他よりも高品質です。

これが私がすることです:

  1. テキストをメモリ内グレースケール ピックスマップにレンダリングします。
  2. その上でガウスぼかしを実行します(おそらく QImageBlitz や ImageMagick などの高速ライブラリを使用します)。ぼかし半径は約 2 ~ 3 ピクセルにする必要があります。
  3. ぼやけた画像に急なトーンカーブを適用するため、輝度範囲 [0.0, 0.9] はほぼ 0.0 にマッピングされます。これにより、ぼやけがなくなり、その結果、テキストの「太った」バージョンになります。トーン カーブは次のようになります。

    代替テキスト

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

また、必要なシャドウの柔らかさに応じて、さまざまなトーン カーブを使用できます。直線的なトーン カーブは、非常にソフトなシャドウになります。

于 2010-12-02T18:59:47.357 に答える
2

私は通常、このようにしています:

  1. 色を半透明の黒に設定します (例: (0,0,0,0.5))
  2. 9方向すべてにテキストを描画します(横に移動してから斜めに移動します)
  3. fg テキストを描画します。

見栄えがよく、レンダー リストと翻訳を使用して高速化できます。

ここを参照してください:http://i.stack.imgur.com/Dh68y.png

于 2012-11-02T16:46:57.590 に答える