SilverlightとXNAの連携
![]() |
ここまでをまとめると、コントロールを組み合わせて構築する一般的なアプリケーション開発ならSilverlightで作る。フレームごとに画面更新が必要なゲームや3DのハイエンドなゲームはXNA Frameworkで作る。ということです。
|
![]() |
でもXNA Frameworkにはビジュアルなコントロールが用意されていないから、ゲーム以外のツールの中で3Dを使いたいときはどうしたらいいのかしら。
あと、ゲームでも、ボタンとかテキストボックスは使いたいのよねー。 |
![]() |
はい。実は、これまでのWindows Phone 7では、SilverlightかXNA Frameworkの一方しか選択できませんでした・・・
|
![]() |
ですが、日本で発売されたIS12Tに搭載されている最新バージョンのWindows Phone 7.5では、双方の機能を組み合わせれるようになりました。
|
基本はSilverlightアプリケーションとなっていて、内部でXNA Frameworkと描画を共有できるようになりました。SilverlightコントロールをテクスチャとしてXNA Frameworkで描画できるため、ゲームのUIにSilverlightを利用できます。3Dのゲームでも、メニュー画面などでボタンなどのUIを作る必要があるため、部分的にSilverlightと組み合わせることで実装が簡単になります。
XNA Framework側でSilverlightのページに描画を行うにはSharedGraphicsDeviceManagerクラスを用い、デバイスの共有を有効にします。SharedGraphicsDeviceManagerクラスはXNA Frameworkで描画するために必要となるGraphicsDeviceオブジェクトを提供します。
SilverlightのコントロールをXNA Frameworkで描画するにはUIElementRendererクラスを用います。XNA FrameworkではSilverlightコントロールを直接利用することはできないので、UIElementRendererクラスでコントロールを2D画像に変換してから、テクスチャとして描画する仕組みです。
まとめ
![]() |
あの…
いくらなんでも今回、あたしの出番なさすぎじゃない? |
![]() |
というわけで、Windows Phone 7ではC++たんに出番はありません。私だけでビジネスアプリもゲームも作れちゃうのです。
|
![]() |
ちょっとー。ゲーム開発では、まだまだ私が主流なのに。
|
![]() |
でも、ゲーム開発でのクロスプラットフォーム性を考慮するとC++が使えないのは問題がありそうね。
|
![]() |
そうよ。商業のパッケージゲームはもちろん、iOSやAndroidのゲーム開発にも私が使われているんだから。
|
![]() |
まぁ、ゲーム業界だとC++で書かれたライブラリが多いですからね。でも、純粋に独立したデータモデルやロジックならC#に移行するのは難しくありません。C++で厄介だったメモリ管理の大部分はランタイムとフレームワークがやってくれます。
|
![]() |
問題は描画ですが、そこはC++というよりOpenGLに依存しちゃってるものが多いので、Windows Phone 7がC++にだけ対応しても意味ないのです。
|
![]() |
そうね。近年のソフトウェアの生産性や品質は、プログラミング言語ではなくフレームワークによるところが多いから言語に拘るのは生産的ではないわ。
|
![]() |
そうです。C++たんは、なんならもうゴールしてもいいんですよ。
|
![]() |
いえいえ、まだまだ。C#たん、少し頭冷やそうか。
|












