SilverlightとXNAを融合させてWindows Phoneアプリケーションを開発しよう
Windows Phone 7.5でつくる3Dアプリケーション(2)
Silverlightの上でXNAの描画を有効にする
上記のメソッド内では、GameTimerクラスの他にもGraphicsDevice.SetSharingMode()というメソッドを実行しています。このメソッドこそが、Silverlight/XNAにおけるもう一つの要となります。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
SharedGraphicsDeviceManager.Current.GraphicsDevice.SetSharingMode(true);
timer.Start();
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
timer.Stop();
SharedGraphicsDeviceManager.Current.GraphicsDevice.SetSharingMode(false);
}
前回の記事でご紹介した通り、Silverlightというフレームワークは、XAMLをもとにして自動的に画面を描画します。しかしながら、GameTimerクラスを利用してXNAのゲームループを発生させる場合、画面をXNAで描画できなければ意味がありません。つまり、Silverlightによる描画機能を無効にして、XNAによる描画機能を有効にする必要があるわけです。これを実現するために用意されたメソッドがGraphicsDevice.SetSharingMode()メソッドです。
GraphicsDevice.SetSharingMode()メソッドは、XNAとSilverlightでグラフィックデバイスを共有するかどうかの設定を切り替えることのできるメソッドです。引数としてbool値を指定することが可能であり、trueを指定した場合はXNA、falseを指定した場合はSilverlightによる描画が有効となります。よって、このメソッドを実行することで、Silverlightの上で動作するXNAのゲームループにおいて、XNAによる画面の描画が可能となります。
ここまでのまとめ
このように、Silverlight/XNAの仕組みは非常に簡単です。GameTimerクラスにより、Silverlightの上でXNAのゲームループを発生させ、GraphicsDevice.SetSharingMode()メソッドにより、画面の描画をXNAで行うように切り替えているだけです。
しかしながら、より高度なアプリケーションを開発する場合、同一の画面でSilverlightとXNAを併用したいというケースもあることでしょう。次章では、Silverlight/XNAプロジェクトをもとにして、SilverlightとXNAを融合させる方法をご紹介します。
この記事は参考になりましたか?
- Windows Phone 7.5でつくる3Dアプリケーション連載記事一覧
-
- Windows Phoneで3Dアプリケーションを作成しよう
- 3Dモデルを作成してWindows Phoneアプリケーションで描画しよう
- SilverlightとXNAを融合させてWindows Phoneアプリケーションを開発...
- この記事の著者
-
もとひろん(モト スクウェア ソリューション)
自営業でシステムエンジニアを営んでおります。主に.NETテクノロジによるシステム開発を得意としておりますが、いざとなれば何でもやります。ふつつかものですが、よろしくお願い致します!WebサイトMOTO SQUARE SOLUTIONTwitter@MOTOSQUARE
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
