続々WindowsフォームアプリでXNAを使ってみる

WindowsフォームでXNAによるポリゴン表示ができる様になったので、ContentManegerで画像を読み込み、テクスチャを貼ってみました。

AppHubのサンプルコードのドキュメントに記載の手順に従って実施。

まず、プロジェクトに沿ってコンテンツをビルドする必要があります。これは、XNA Framework のコンテンツ プロジェクトをソリューションに追加することで行います。また、コンテンツ プロジェクトは自身を直接ビルドすることができないため、コンテンツをビルドするためのゲーム ライブラリー プロジェクトも追加する必要があります。最初に、ソリューションに "空のコンテンツ プロジェクト" を追加し、新しいコンテンツ プロジェクトにコンテンツ ファイル (このサンプルで使用されている Arial.spritefont など) を追加します。次に、コンテンツのビルドに使用する "Windows ゲーム ライブラリー" プロジェクトを追加します。このライブラリー プロジェクトに実際に何らかのコードを追加する必要はないので、プロジェクト テンプレートによって追加された .csproj ファイルは削除してかまいません。次に、ゲーム ライブラリー プロジェクトを右クリックして [コンテンツ参照の追加] を選択し、コンテンツ プロジェクトを選択します。最後に、メインの WinForms プロジェクトを右クリックして [参照の追加] を選択し、ゲーム ライブラリー プロジェクトを選択します。これで、コンテンツ ファイルは、XNA Framework Content Pipeline を使用してビルドされ、実行可能ファイルと共にビルド出力フォルダーに自動的にコピーされます。


1)ソリューション内にコンテンツプロジェクトを新規追加


2)ソリューション内にゲームライブラリープロジェクトを新規追加


3)コンテンツプロジェクト内に画像ファイルを追加


4)コンテンツプロジェクトの参照を追加

5)ゲームライブラリープロジェクトの参照を追加 




「次に、コンテンツ ファイルを読み込むための ContentManager を作成する必要があります。ContentManager は、グラフィック データを読み込むために、カスタム GraphicsDevice にアクセスする必要があります。これら 2 つを接続するための何らかのプラミングを配置する必要があります。GraphicsDeviceService クラスは、標準の IGraphicsDeviceService インターフェイスを実装します。ContentManager は、グラフィック デバイスを見つける必要があるたびに、このインターフェイスを使用します。このインターフェイスを公開するために、GraphicsDeviceControl は、Services プロパティを提供し、その OnCreateControl メソッド内の IGraphicsDeviceService を登録します。このプラミングが適切に配置されると、SpriteFontControl.Initialize メソッドで見られるように、カスタム Services を ContentManager コンストラクターに渡すことができます。」


6)CntentManagerの作成と画像ファイルの読み込み


using Microsoft.Xna.Framework.Content; を追加し、

Initialize()内に以下を記述しました。


   contentManager = new ContentManager(Services,"Content1");
     texture = contentManager.Load<Texture2D>("texture");


   "Content1"は追加したコンテンツプロジェクトです。


7)後はポリゴンを三角形から矩形に変更し、テクスチャを貼る様にコードを改変。
ビルドも成功して、デバッグランしたら例外発生!


HiDefプロファイルとは何ぞ?とググってみるとひにけにXNAに説明がありました。


8)HiDefからReachにプロファイルを変更



9)再度デバッグランして、button1をクリックすると、無事に愛犬のテクスチャが貼られた矩形がグルグル動きました。


プロジェクト一式



コメント

このブログの人気の投稿

ARM用クロスコンパイラのビルド(Windows8+Cygwin)

Raspberry Pi のsleep時間測定

Cygwin+Emacs Problem