- ベストアンサー
DirectXのフォントについて
現在、DirectX と C++でオリジナルのシューティングゲームを作っています。 そこで、スコアや画面で文字(文)を表示したいのですが、 使うフォントを環境に依存しないようにしたいのです。 D3DXFontなどで文字描画はできますが、それは使うPCに入っているフォントしか表示できませんよね? 市販や同人のゲームを見ていると、「MS 明朝」などではなくオリジナル、あるいは製作されたフォントを使っているようにしか思えません。 フォントを配布された覚えもありません。 一つ一つの文字を画像にして、それから「画像として」表示する、という方法もありますが、それでは漢字の処理がかなり面倒なことになると思うのです。 つまり、「PCに入っていないフォントをゲーム中で自由に表示できる(ように見せかける)」方法が分からないのです。 やはり文字一つ一つを画像にするしかないのでしょうか。 それとも別の方法があるのでしょうか。 ご回答お願いします。 実際に作品を作っているサークルの方の回答もあれば嬉しい限りです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
他の方の回答と同じなのですが。。。方法は次の二つです。 1.画像ファイルとして事前に用意する。 最も簡単な方法です。 画像として表示すれば、凝った自前のフォントも簡単に表示できます。 が、描画する文字が大量になった場合に、容量を食いますし、台詞など 頻繁に変わる可能性があるものの場合対処できません。 2.フォントファイルを起動中に追加する AddFontResourceを利用して、起動中だけフォントを追加するようにします。フォントファイルを追加するので、台詞などが変化しても対応できます。起動、終了ごとにこまごまと追加削除をするのが嫌なら本体インストール時に勝手にフォントもインストールさせてしまうのも手ですね。 >>画像で処理したほうが「速い」という話も聞いたことがあるような >>気がします。 確かに、D3DXFontの実体はGDIを使っての描画なので、「遅い」です。 しかしこれは毎フレーム描画せずに、一回だけRenderTargetに描画してそれを画像として表示してしまえばいいわけです。 お奨めは、ロゴ、メニューなど懲りたい部分は画像で作成しておき、台詞など大量に文字を扱う必要がある場合は、AddFontResourceで追加したフォントをRenderTargetに対して描画したものを利用するのが良いかと思います。
その他の回答 (3)
- aris-wiz
- ベストアンサー率38% (96/252)
毎回同じ文章を出す・数字を出す などであれば、画像を用意するのが一番良いです。 #大げさな話フォントが無くても表示できますから。 環境に依存しないようにと有りますが、 具体的にどんな場合を想定しているのでしょうか? DirectXならばWindows前提だと思うので、 英語・日本語程度の違いだとおもいますが、 AddFontResourceEx/RemoveFontResourceEx などのWindowsのAPIを使用してオリジナルフォントを ゲーム起動中のみ使うという手もあります。
お礼
!! WindowsAPIをすっかり忘れていました。 DirectXの中ばかり見ていました。 ちなみに「環境に依存」というのは、 例えば、「フォントA」というフォントを(D3DXFontの中で)指定したプログラムを配布したときに、使う側のパソコンに「フォントA」が入っていないという場合です。 このときデフォルトの引数(フォント)を指定していないとエラーが出ると思われます。 AddFontResourceExやRemoveFontResourceExも調べてみようと思います。 ご回答ありがとうございました。
- php504
- ベストアンサー率42% (926/2160)
携帯ゲーム機用のプログラムを作ったことがありますが 自分でフォントを用意するしかないので普通にビットマップフォントを使って表示しました。 画像で表示するのが簡単で楽だと思います。 漢字の処理は別に面倒ではないですよ。
お礼
ご回答ありがとうございます。 考えてみれば、漢字も使うものだけを画像に入れとけば、それほど面倒でもありませんよね。 そういえば、下手にいろいろいじるより、画像で処理したほうが「速い」という話も聞いたことがあるような気がします。 画像を使う方法でも、工夫すれば面倒でなくなりますね。 参考にさせていただきます。ありがとうございました。
- Tamtam9
- ベストアンサー率29% (31/106)
ゲームをインストール時にフォントもインストールするものもありますよ。 BitMap Fontは作るだけでも労力が必要で現実的では無いと思います、 市販ゲームでもBitmap fontはライセンスを買って使うものも多いです。 アルファベット+数字だけなら作るのはアリかな。 あとはフリーのBitmap fontもあるので、それを使うのも手ですね。 "環境依存しないように"に、マルチ ランゲージ環境も含むなら UnicodeでいかないとDBCS(2バイト文字)が、文字化けするかと 思います。(Bitmap font時は除く)
お礼
ご回答ありがとうございます。 なるほど、そういえばゲームCDにはインストーラなるものがありましたね。 BitMapフォントというものも何度か見かけたことがあります。 早速試してみます。 ありがとうございました。
お礼
ありがとうございます。 なるほど、両者を使い分ける方法もあるんですね。 ステージタイトルを画像に、台詞を追加・削除にすれば、 面倒ということもなくなりそうですね。 参考にさせていただきます。 ご回答ありがとうございました。