プログラミング

2008.04.10

フォント

自前のフォント描画プログラムを使って、四角い図形の上に上下左右センタリングして文字を描画した。
文字列は「LOAD」「SAVE」「WIDTH」「HEIGHT」とかそんなの。
フォントはある等幅フォント。

画面に描画された状態をチェックするとあきらかに図形の中心より2、3ピクセル下にずれているように見える。

デバックをしてみたが、きちんとフォントの高さは生成したときと同じ18ピクセルと取得できる。
フォント生成ツールも描画ルーチンも自前だったので、いろいろな場所を疑って1日経過したが原因がつかめない…。

そこで発想をかえてAdobeのPhotoshopElementsで同じものを描画したらどうなるか確認してみた…。

続きを読む "フォント"

| | コメント (0) | トラックバック (0)

2008.03.04

Silverlight実習 その2

さてさて、つづきです。

「はじめてのSilverlight」はわかりやすいんですが、なにぶんテキストを手打ちしているのでグラフィカルな部分を自分なりに作ろうとすると大変なわけで…。

そこで今のところ無料で配布されている試用版の
Microsoft Expression Blend 2 December Preview
を使用してグラフィカルな部分はツールで作っちゃいましょう。

これからの説明は前回のつづきが前提になります。

続きを読む "Silverlight実習 その2"

| | コメント (0) | トラックバック (0)

Silverlight実習

さて、せっかくですのでSilverlight体験記(実習)を公開いたしましょう。

とりあえず今回はこのページ
http://www.microsoft.com/japan/academic/kyozai/hajimete_silverlight/chapter00_1.mspx
の右側にあるリンクの第一章を私なりにやってみることとします。

事前に他の章(準備編)を読んで予習しておいたり準備したりすることをオススメします。
とくに準備編の第2章では開発環境の準備について話ていますので、準備をお願いいたします。

Silverlight 1.0 プラグイン(無償)
Silverlight 1.0 SDK(無償)

それと私なりの実習ということで極力無償のツールを使ってみようと思います。
今回は以下のツールを使用しました。

Microsoft Visual Web Developer 2008 Express Edition
Microsoft Expression Blend 2 December Preview

それとどうも私はSilverlightと関わってからIEが固まる現象に悩まされています。
…ということでこれから書くことはすべてみなさんの自己責任でお願いいたします。

それでは長文になりますので…

続きを読む "Silverlight実習"

| | コメント (0) | トラックバック (0)

2008.02.23

開発ラッシュ

 やっとまとまった時間が取れるようになりました。

 正直この期間は収入がガクンと落ちるのですが、今年はアルバイトレベルの収入は期待できそうで、我が家は共働きでもあるので、まぁ生きていけるレベルよりちょっと裕福水準を確保できそうです。

※確定申告で戻ってくるお金でおっきなテレビが欲しい。XBOX360のゲーム遊ぶのちっさい(といっても26インチブラウン管)テレビではもう限界っす。

 まとまった時間で部屋の片付けや掃除、今年度の仕事内容の整理、来年度の準備、と色々やらなくてはいけないことがあるのですが、メインはなんと言っても研究開発。

 プログラムだけではなくて、グラフィックツールだの、サウンド関連だの、興味のあることをかたっぱしから研究する期間にしています。
 自分へ投資する期間といったところでしょうか。

 当然DirectX(シェーダーもね)やXNA関連ははずせないところなのですが、そろそろ.NET FrameworkとかWeb開発とかデーターベース開発の知識も欲しいところ。

 いや、お恥ずかしい話、メインはゲームプログラマですが、Web開発(HTMLとかそういうの)やスクリプト系(Rubyとか)を業務で使うのが嫌いでして、自分の技能や知識が追いついていないのでイライラするんです。

 ということでおいついとこー…みたいな感じでMicrosoft Visual Web Developer 2008 Express Edition や Microsoft Expression Blend 2 December Preview をいそいそとインストールしたり、SilverlightのSDKやRuntimeインストールしたりとちょっとトレンドっぽいところから初めてみてます。

 Microsoft Silverlight 1.1 Alpha Refresh のRuntimeを試してみようとインストールしたら通常のWeb観覧(ページを読み込むタイミングで)しているだけで、iexplore.exeのプロセスがCPU占有率98%とかになって画面が固まる、固まる。

 実は現在普通に配布されている(画面にSilverlight入れない?って広告でますよね?)SilverlightのRuntimeを入れたときも同様の現象が起きてまして、そのときはPCの再起動で直った(ような気がする)んですが、Microsoft Silverlight 1.1 Alpha Refresh はそれでもダメ。

 まぁC#が使えるってんでやってみたかったんですけど、まだお金なくてVisual Studio 2008買ってないし(Express Editionでがんば)βや正式版がでてからでいいっかみたいな。

 昔も今もMSDNは見にくい構成ではあるものの(どうも日本人特有のことらしいが)内容は非常に充実していたりする。
 SilverlightやMicrosoft Visual Web Developer 2008 Express Editionの「どっからはじめよーかー?」的なチュートリアルはMSDNにそろっているし、SilverlightのSDKにも導入部分についてのヘルプやhtmlでのチュートリアルが存在している(のを確認した)

 MSDNで私が見てほほーっやってみっか?と思ったきっかけになったのはここ。

・マイクロソフト ステップアップ スクエア 「はじめてのSilverlight」http://www.microsoft.com/japan/academic/kyozai/hajimete_silverlight/chapter00_1.mspx

・MSDN オンラインイベント 定期コンテンツ 300秒シリーズ(2007年版)
http://www.microsoft.com/japan/msdn/events/online/thisweek/07/
↑これの「ここが知りたい!シリーズ」 3、4、5あたり。

| | コメント (0) | トラックバック (0)

2007.09.20

VC++ 2005 セキュリティーコード

普段プログラムはMicrosoftのVisual C++ 2003で組んでいるけど、ノートパソコンにはMicrosoft Visual C++ 2005 Express Edition + Microsoft Platform SDKをインストールして使っている。
※VC++ 2005 Express Edition と PlatformSDK は 「タダ・無料・フリー」 昔じゃ考えられないな。あぁけどLSI-C86試食版とか使ったっけ。

ところが新しいだけあって(2008の宣伝をどっかでちらっとみたけど)2002や2003で組んだコードだと警告(warning)やエラー(error)がどっちゃりと出てくる。
系統的には2種類で文字コードの問題とセキュリティーコードの問題らしい。

今回はそのセキュリティーコードの話をしようと思う。

続きを読む "VC++ 2005 セキュリティーコード"

| | コメント (0) | トラックバック (0)

2007.08.24

SOFTIMAGE_XNAViewer

さて XSI 6 Mod Tool がもんのすげー使える(使えそうだな)とわかってきた気がする。
期待するのは当然 XNA との連携なのだが、XSIのラーニングを請け負っているNoesisのXNAとの連携チュートリアルは(おそらく)まだ公開されていない。

前回の記事でXSIのチュートリアルで作った時限爆弾をポリゴン数を手動(といっても普通行なうであろう作業なんかよりよっぽど楽なのだが…)で少なくする作業をほどこした後、FBXで出力してXNAのBasicEffectにて表示することは難なくできた。

しかし、本来の目玉はXSI 6 Mod Tool上でマテリアルごとにシェーダーを設定して、それをそのまま表示することが(データにどのシェーダーが使われているか?等の情報を入れることが)可能なはずなのだ。

今回はCrossworkのその仲間たちとそのXNAで使用するサンプルであるSOFTIMAGE_XNAViewerを使ってマテリアルにシェーダーを設定したモデルを表示しようと思う。

続きを読む "SOFTIMAGE_XNAViewer"

| | コメント (0) | トラックバック (0)

2007.08.18

[XNA]:XSI 6 Mod Tool

 そろそろXNAで3Dグラフィックあたりを触ろうかな…と思ってサンプルモデルどーしよ?と思っていた矢先…XNA Creators Club Onlineのトップページにこんなニュースがありました。
 SOFTIMAGE|XSI Mod Tool Now Plugs In To XNA Game Studio Express …お、XSI Mod Tool用のXNAプラグインでもできたかな…?そりゃーうれしい…と内容も読まずにそのプラグインとやらを探すこと数分間…。ない。そんなものない。

 …しかし、XSI の(英語の方ね)XSI Mod Tool のページが以前より華やかになっている気がする…。  それとNoesis(メーカーか何かの名前なのかな?)のチュートリアルでXSI Mod Tool の使い方を覚えよう…といった内容がちらほら。

 …うーん、XSI Mod Tool ごとまたダウンロードしなきゃいけないのかなぁ…以前すでにダウンロードしてインストールしてあったので気が重い。

 まぁそれでもとダウンロードしようとダウンロードページまでたどり着いてアンケートみたいなのに答えていくと、その中に「ちみは どのゲーム環境で Mod Tool を使う予定だい?」という答えの選択肢の中に

 XNA -> PC
 XNA -> XBox

という欄が…。(以前からあったっけ?)

 ちょっとだけ期待してダウンロード後、インストール。
 ツールが立ち上がった後(しまった、内容覚えてないや)、ダイアログが出てくるので、OKを押す…。(多分これであってる。)

 何かをダウンロードかインストールしている内容のプログレスバーが出たあと、無事終了っぽい。

 ディスクトップに作られたショートカットアイコンを見てみると XSI 6 Mod Tool と…あ、バージョンアップ?UIフェースも昔のものと比べて全然違うし、メニューバーに XNA Game Studio の欄が。

 後で調べてわかったことだけど、FBXとかシェーダーとかそういったものをサポートするようになったっぽい。
 吐き出せるのは64000ポリゴン(三角形)までで、商用利用不可。
 あとレンダリングについての制約がちょこっと。
 法線マップとかの解像度が512x512まで(UVしっかり吐いてるんだろうから、XNAで使うときに高解像度のやつに差し替えればいいんじゃ…?)。

----------
 8/18 12:19 追記 - 日本のXSIサイトできちんと英語だった XSI 6 Mod Tool の紹介ページが日本語訳されて掲載されてた。
 そこにはこうある。
 Ultimapper を使って作成するマップの最大解像度は512x512です。
 ハードウェアレンダラを使った画像出力の最大解像度は512x512に制限されています。
----------

 それとXSIファイル自体をXNAのコンポーネントとして登録して描画できるらしい。

 …ちょっとすごくねーか?やるなーXSI。M○○aの使えん試用版とは大違いじゃ(勉強する分にはいいんですが)。

 さて、いろいろ"XSI Mod Tool XNA"で検索して調べているとLAGさんのブログSOFTIMAGE_XNAViewerというものについて知った。
 これついて記載しておく。

 これは私の感じたところXNAでXSIファイルのインポートと描画のサンプルプロジェクトっぽい。
 試すにあたってちょこっと改変した。

 まず、原本をいじるのはいやなので、フォルダごとコピーします。
 フォルダは XSI 6 Mod Tool をインストールしたフォルダ以下のAddons\XNAGSE\Dataの中にあるXNA_SAMPLESってやつです。

 どっか適当な場所にコピーしたら(私は念のため日本語を使わない場所にいつもしています)フォルダの中にあるソリューションファイル(SOFTIMAGE_XNAViewer.sln)をダブルクリックしてXNA環境を立ち上げましょう。

 すでにコンテントの中にはサンプルのXSIモデルが入っているのですが、このままビルドすると参照しているシェーダーファイルが無いよんとコンテント・パイプラインのエラーで止まります。
 どうもファイルの中の外部ファイルへの参照パスがT:\\Storm\\src\\XNA\\SOFTIMAGE_XNAViewer\\Content......とかになっているのが原因のようです。

 なので xsi_logo.xsi ファイルを開いて"T:\\Storm\\src\\XNA\\SOFTIMAGE_XNAViewer\\Content"という文字列を".."で全置換してしまいましょう。

 次にソリューションプラットフォームがMixed Platformsになっているので、お好きな環境にセットします。

 Gw20070818044816

 そしたらいつもどおり、ビルドして実行しましょう。
 XSIのロゴ(?)の丸い球体が出たら成功です。(たぶん)

 ただ私の環境だとアスペクト比が変です。
 なのでこの部分

// - Game1.cs 471行目あたり -
// float aspectRatio = 1.3333333f; // graphics.GraphicsDevice.Viewport.Width / graphics.GraphicsDevice.Viewport.Height;
float aspectRatio = (float)graphics.GraphicsDevice.Viewport.Width / graphics.GraphicsDevice.Viewport.Height;

と変更します。(コメントアウト部分をそのまま使うのではなく、floatでキャストするのをお忘れなく)

 それともっと高解像度にしたければ

// - Game1.cs 44行目あたり -
// use this for 720P
graphics.PreferredBackBufferWidth = 1280;
graphics.PreferredBackBufferHeight = 720;

// for NTSC, use a 4:3 ratio
//graphics.PreferredBackBufferWidth = 720;
//graphics.PreferredBackBufferHeight = 480;

なんて変えればOKです。
※どっちもコメントアウトで用意されてた…

Gw20070818062746

 あと操作方法ですが、UpdateGamePad() メソッドを見ればわかると思いますが

 START + BACK … 終了
 START … アニメーション再生・停止
 BACK … アニメーションのリセット
 左スティック押し込み … カメラのリセット
 十字キー右 … アニメーションの切り替え
 Lトリガー … ズームアップ
 Rトリガー … ズームダウン
 Lボタン … カメラの移動(前)
 Rボタン … カメラの移動(後)
 左スティック … 視点を中心に回転移動(始点を向いたまま)
 【↑これちょっと自信ない】
 右スティック … カメラの移動(上下左右)

です。
 ぱっと見、フォンシェーディングと法線マップによるバンプマップが確認できます。
 それとソースコード見てみると…アニメーションのブレンドしてるかも。

 自分のモデルとか表示できるように、XSI 6 Mod Tool 勉強しますかね。
 今のところ、XNAのプラグインで発見した内容に、モデルの診断機能があるらしく

 1つのモデルの最大ボーン数 … 58
 1つの頂点に対して影響するボーンの最大数 … 4

と設定されていました。
 1つのモデルの最大ボーン数の58っていうのは、なんとなく見に覚えがあって、たしかシェーダーのレジストリにのっけられる変換マトリクスの配列数の最大がそれくらいだった気がする。

 以前大蛇のような蛇のモデルとかスカートふりふりの女の子のモデルを(両方ともアニメーション付き)XNAで表示しようとしたら、その制約にひっかかって表示できなかったんだよね…。

 その制約はずすためには、どうしたらいいんだろう?
 CPU側でマトリクスの変換してからシェーダーにデータ渡せばいいのかな?
 …あぁ、頭がまわらん…歳のせいかしら???

| | コメント (0) | トラックバック (0)

2007.08.16

[XNA]:文字列描画 その4

 まず、設定ファイルであるXMLだけど、正直XMLから作ることがボクにはできない。

 XMLがまったくわからない…というわけではないが、苦手。

 なのでシリアライズして出力してしまおう。

 幸いにもひにけにさんのサンプルにもシリアライズ用のメソッドが用意してある。
 ※TextMessageDescriptionクラスのTestWriteメソッド

 では先にTextMessageDescriptionクラスを改変してしまおう。

 今回、.spritefontファイルは廃棄して、設定用のXMLファイルに統合する。
 なので.spritefontに記載されていた内容と同等のデータの受け口を用意しなくてはいけない。

 それと、私はどうもサンプルのXMLで一番好きになれないのは【ExternalReference】がごちゃごちゃ感をかもしだしている部分だと思った。
 そこで、ExternalReferenceという記述をXMLから廃棄したいのだが、ひにけにXNAさんにも書かれているようにファイルの依存関係がらみで必要なようなのだ。
 …ようなのだ…というのは…実はいろいろ調べたがExternalReferenceというやつがイマイチ理解できなかった。

 そこでTextMessageProcessor内でファイル名を素直に受け取って、ExternalReferenceのインスタンスを生成して、受け取ったContentProcessorContextクラスオブジェクトのBuildAndLoadAssetメソッドを呼ぶ流れに持っていこう。

 TextMessageDescriptionクラスが思惑どおりに改変(当然TestWriteメソッドも含む)できたら、TestWriteメソッドを使って、サンプルXMLを出力しよう。

 私の場合、めんどくさかったので(1)SampleWinプロジェクトの参照設定にPipelineプロジェクトを入れる。(2)いちばーん始めに実行されるであろうProgram.cs内のMainメソッド内に

TextMessageDescription.TestWrite("test.xml");
とファイルの先頭あたりに
using Sample.Pipeline;
と記述する。

 おそらく、プログラムを実行するとエラーになるだろうが、この部分がとにかく実行されれば【\Sample\bin\x86\Debug(\Release)】あたりにXMLファイルが出力されているはずだ。
 出力されたXMLを元に実験用の設定を書いてコンテントとして登録しておく。
 ※Content Importer は XML Content Content Processorはテキストメッセージプロセッサ
 ※XNA Framework ContentをTrueにしないと上記の設定は出来ないので注意しよう。

 あとはTextMessageDescriptionクラスにあわせてTextMessageProcessorの内容を書き換えればいい。

 ちなみに私はC#なんかぜーんぜん書いたことがないのでフィーリングで改変している。あしからず。

 やはり、XMLの内容は断然すっきりした。勝因はやはりExternalReferenceをXMLに書かないことにある。
 XMLファイルに記載しないで、今回のようにソースコード(プロセッサ内)に書くことによってどんな弊害がでるのか?(それとも弊害がないのか?)は、今のところさっぱりわからない。
 改変が完了した状態で実験したが、ファイルの依存関係はばっちりで、登録されたテキストファイル・ソースコード・設定ファイルのXMLのいずれかが改変さた状態でビルドすると、きちんとXNBファイルを作り直してくれる。

 今回の実験のおかげでコンテント・パイプラインの流れが、もう少し詳細にイメージできるようになったかな…と思う。

 そろそろ、フォントまわり(コンテント・パイプライン)あたりから離れて、楽しそうな3D表示あたりをいじってみようかな。

今回のサンプルはこちらから↓
「TextMessageSampleNext.zip」をダウンロード

※今回のサンプルは「ひにけにXNA」さんのサンプルを改変したものです。

| | コメント (0) | トラックバック (0)

[XNA]:文字列描画 その3

■ファイルの外部参照を極力やめたい。
■XMLがごちゃごちゃしていて生理的にイヤ。
■複数のファイルを読み込みたいときは?

 残りのこれらをやっつけていくにはもう少し考察が必要だと思うので書いてみた。
 お付き合い願いたい。

 経験からいって、設定ファイルだの、データファイルだのというのは、極力まとめられるものはまとめた方がいい。
 外部参照するにしろ、それは必要があってのことだし、ソースコードではない…つまり切り分けた外部ファイルっていうのはプログラマ以外の役職の人が触ることが多い。
 たとえ一人でゲームを作っているにしろ、ファイルを作る手間は少ない方がいいし、管理のしやすさとか、シンプルさはある程度必要だろう。

 切り分けるか、分けないか、悩んだときはコストの安い方を選ぶ。

 そんなとき、XNAでは「すでにXMLインポーターがあって、これくらいのデータ読むならXMLの方がいい」っていうのは判断材料の1つ。

 正直、多くの人はおそらく『XMLはきらい』ではないか?

 理由はたくさんあるけど、ごちゃごちゃカッコだのスラッシュだのと少しくらいならいいが、あんなに多く書きたくはない(よね?)。

 たとえばこんな内容の設定ファイルはどうだろう?

[Font]
FontName = "MS Gothic";
Size = 26;
Spacing = 4;
Style = Regular;

[Files]
MessageText.txt : shift-jis;
test1.txt : utf-8;
SampleGame.cs : shift-jis;

[Data]
DiscardMessage = No;

 もっといい書き方もあるだろうが、普通これくらいでいいじゃないか。

 では、何が悲しくてXMLなのか?それはやはりプログラムを組むコストの問題である。

 プレーンのテキストにオリジナルのルール(フォーマット)にのっとって設定を書いた場合、そのフォーマットを読み取るプログラムを組まなくてはいけない。
 それは文字列の解析から始まって分割、そしてフォーマットからデータに落とす(詰める)という機構すべてを書かなくてはいけなくなるだろう。
 その上、設定ファイルが必要になるたびに新しいフォーマットを考えたり、またそのために解析部分を書いたりと、たとえ流用部分があったとしても、結構コストがかかる作業になるのではないか?

 その点、XMLはもう全世界共通のフォーマットである上に、XNA(C#?)にはすでに解析(パース)する機構が存在しているのだから、利用しない手はない…というわけだ。

 その仕組みはこうだ。

 SampleMessage.xmlの内容はTextMessageDescriptionクラスの内容をシリアライズしたものだ。

 なので、予想ばっかりで申し訳けないのだが、XMLインポーターとはXMLの内容を設定されたクラス型のオブジェクトへデシリアライズするものなのだと思う。

 プロジェクトに登録されたContent内のSampleMessage.xmlのプロパティを見てみればわかるが、このファイルをXMLインポーターでインポートした後、そのデシリアライズされたオブジェクトはTextMessageProcessorへ送られる。

 TextMessageProcessorは受け取った(TextMessageDescriptionクラス型の)オブジェクトのデータを元に、TextMessageContentクラス型のオブジェクトへ一生懸命データを詰める作業をする…といった流れだ。

 ちなみに、データの詰め終わったTextMessageContentクラス型のオブジェクトはオーバーライドされたWriteメソッドが呼ばれ、ContentWriterクラス型オブジェクトのメソッド(WriteObject)を使ってファイルに出力する。

 それが今回のXNBファイルというわけだ。(…なんじゃないかと…思う。しっかり調べないで憶測ばかりでごめん)

 これらの考察から今回の実験では読み込む設定ファイルはXMLとし、「.spritefont」ファイルの内容と、どのファイルの内容をフォント化するか?のファイルリスト(つまり複数ファイルに対応)とDiscardMessageのフラグにもきちんとそのまま対応できるように作ろうと思う。

 あと、できれば、もう少しXMLファイルをシンプルにしょう。

《その4につづく…》

| | コメント (0) | トラックバック (0)

[XNA]:文字列描画 その2

 ひにけにさんの【Content Pipeline その3 そのカスタマイズ】はフォントの取り扱いについてもコンテント・パイプラインってなんぞや?といった点についても、とてもすばらしい記事・サンプルだった。

 しかし、実際実用的に使うことを想定すると疑問やこだわりも出てくる。

  1. ファイルの外部参照を極力やめたい。
  2. XMLがごちゃごちゃしていて生理的にイヤ。
  3. ソースコードを実際に読み込んでデバック文字として使えるのか?
  4. 複数のファイルを読み込みたいときは?

 とりあえず、上記についてひにけにさんのサンプルコードをちょこちょこといじってみよう。

■ソースコードを読み込んでデバック文字として使えるのか?

 ためしにやってみりゃいい…とサンプルの中にあるSampleMessage.xmlを編集する。

<ExternalReference ID="#External2" TargetType="string[]">MessageText.txt</ExternalReference>

 この部分がMessageText.txtを指定している部分だと容易に想像できる。
 MessageText.txtはContentフォルダに入っているので、おそらくContentフォルダからの相対パスで問題ないはずだと予想してこうしてみる。

<ExternalReference ID="#External2" TargetType="string[]">../SampleGame.cs</ExternalReference>

 それとTextMessageProcessorでは外部参照しているファイルをどのインポーターにかませるかを判断するのに拡張子とインポート後の型から判断している(と思う)。
 TextMessageProcessor内で強制的にTextImporterを使う設定にすることもおそらく可能だが、はやく確認しちゃいたいのでTextImporter.csの拡張子を設定している部分を変更。

// - TextImporter.cs 15行目くらい -
// [ContentImporter(".txt", DisplayName="UTF-8 テキストファイルインポーター")]
[ContentImporter(".cs", DisplayName="ソースコードインポーター")]

実行結果
実行結果

 ありぃ?日本語がでにゃい…???
 もしやと思い、ソースコードの文字コードを確認してみる。
 shift-jis…Unicodeじゃないの?このサンプルコードだけ?…ってわけでもなさそう。
 そうかぁ、ソースコードはshift-jisで編集・保存されてるんだに…。

 じゃー shift-jis から Unicode にどっかで変換してあげなくちゃいけない…
 変換とくれば当然インポーターだろうか。
 サンプルのパイプラインの流れはインポーターで変換対象であるファイルの文章を文字列型の配列に変換してそれを空白行単位の文字列型配列に変換するのと、FontDescriptionProcessorにくわせるためにFontDescriptionの中の文字リストへ文字コードをつめる作業の2つに分かれる。
 どちらもUnicodeで取り扱うべきものなので、ファイルを読み込み時すぐにUnicodeに変換しちゃうのが効率いい。

// - TextImporter.cs 31行目くらい -
// using (StreamReader sr = File.OpenText(filename))
using (StreamReader sr = new StreamReader(filename, System.Text.Encoding.GetEncoding("shift_jis")))

実行結果その2
実行結果その2

 もし実際にこのままデバック用文字フォントを生成するなら、サンプルそのままのTextImporter.cs とは別に、上記のようなソースコード用の…たとえば SourceCodeImporter.cs とでもしたインポーターを作るだけで、拡張子からそれがソースコードかテキストか自動で判定して上手い具合に通るだろう。

 ちなみにその際、TextMessageProcessorにくわせるxmlファイルには

<DiscardMessage>true</DiscardMessage>

とDiscardMessageフラグを立ててあげれば、文字列データに含まれることなくフォントデータを生成することができる。

 これで無事ソースコードをくわせてデバック用文字フォントを生成することができた。

《その3につづく…》

| | コメント (0) | トラックバック (0)

より以前の記事一覧