縁取りやドロップシャドウつきの特別な文字列描画に挑戦

 前回の「エンボス in 3Dモデル」の本来の目標としてた特別な文字列描画プログラムができました。前回の「エンボス in 3Dモデル」で文字の3Dモデルを作って使うものです。
※「エンボス in 3Dモデル」のプラグインには、文字サイズを特定するために、加工前に境界箱情報を生成する処理を追加しました。

  • 使用フレームワーク: XNA Game Studio 4.0
  • スクリーンショットは、テストのため「A」「B」「C」「D」の4文字だけで、ランダムで表示しています。
    • 大きさや見た目の違ういくつかの文字列は、1種類のフォントを直接描画しています。1つのFBXファイルに格納した「A」〜「D」の4つの3Dモデルのみです。

特徴

    • 文字のフォントは、3Dモデルとして読み込む。画像を読み込んだものではない。
    • FillやStrokeの色を決定するテクスチャ、レンダーターゲット、専用のエフェクト(HLSL)で描画を実行する。

メリット

  • 文字の大きさが変更でき、劣化が小さい。
  • ひとまとめで描画した文字列は、文字同士がきれいに融合した状態(一方が他方の上になったりしない)で描画できる。
  • その状態で、「アンチエリアシング」「文字の太さ」「縁取り」「ドロップシャドウ」に相当する効果を伴った出力を作れる。
    • ドロップシャドウ効果は、本体の文字列より先に、文字列として影を描画している。ポストエフェクトによるブラーなどではない。

デメリット

  • SpriteFont(スプライト方式の文字描画)などより高負荷。
  • ポリゴンメッシュとして直線の集合として表現するので、曲線部分の再現には限度がある。(パフォーマンスとの相談)
    • ベクトルフォントと比べると、大きな文字描画の品質には限度あり。(DirectX11以降用に作れば改良できそう)