XNA と Silverlight (Windows Phone “Mango”)

先週まで Silverlight 5 (Beta) の DrawingSurface の話をしてきましたが、先日リリースされた Windows Phone “Mango” でも XNA と Silverlight でサーフェイスの共有が可能になっています。Windows Phone ではどちらもフルスクリーンに描画するので、DrawingSurface のようなコントロールはなく、以下のメソッドで共有モードを true にするだけです。

SharedGraphicsDeviceManager.
Current.
GraphicsDevice.
SetSharingMode(true);

Windows Phone Developer Tools 7.1 Beta をダウンロードしてインストールすれば、Visual Studio 2010 Express for Windows Phoneと Expression Blend がインストールされ、Windows Phone “Mango”用アプリのビルドができます(エミュレータで動作)。ただし、日本語 Expression Blend がインストールされているときは、先にそれを削除する必要があります。

次に Code Samples for Windows Phone にある My Little Teapot Sample をダウンロードしてビルドすると以下のようなティーポットが Silverlight のメニューと一緒に表示されます。もちろんタッチ版のトラックボールも実装されています。

image

Visual Studio で New Project を選び、Windows Phone 3D Graphics Application テンプレートで新しいプロジェクトを作成すると、GamePage.xaml と GamePage.xaml.cs が作られます。この GamePage.xaml.cs の中で上記のメソッドが呼び出されています。また Silverlight の背後コードなのに、XNA の OnUpdate と OnDraw メソッドがある不思議なクラスです。XAML (と必要ならコールバック)で Silverlight のメニューを作り、XNA でゲーム画面というハイブリッド アプリケーションが作成できます。

Mango3DApp