SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows Phone 7.5でつくる3Dアプリケーション

SilverlightとXNAを融合させてWindows Phoneアプリケーションを開発しよう

Windows Phone 7.5でつくる3Dアプリケーション(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

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を併用したいというケースもあることでしょう。次章では、Silverlight/XNAプロジェクトをもとにして、SilverlightとXNAを融合させる方法をご紹介します。

次のページ
SilverlightとXNAを融合させる

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Windows Phone 7.5でつくる3Dアプリケーション連載記事一覧

もっと読む

この記事の著者

もとひろん(モト スクウェア ソリューション)

自営業でシステムエンジニアを営んでおります。主に.NETテクノロジによるシステム開発を得意としておりますが、いざとなれば何でもやります。ふつつかものですが、よろしくお願い致します!WebサイトMOTO SQUARE SOLUTIONTwitter@MOTOSQUARE 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6244 2011/11/04 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング