縁取りやドロップシャドウつきの特別な文字列描画に挑戦
前回の「エンボス 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以降用に作れば改良できそう)