Silverlight 5 RCが登場。XNA互換APIの変更点は?

 Silverlight 5 RCが登場しました。今回も3D周りのサポートのために加わったXNA互換APIに注目して、Silverlight 5 BetaからSilverlight 5 RCへの変更と新機能を見ておきたいと思います。

変更

アセンブリ
DrawEventArgs
  • DrawEventArgs.GraphicsDeviceプロパティは消え、GraphicsDeviceManager.Current.GraphicsDeviceプロパティを使うことになった。

新機能

エフェクト

Effectクラスおよび、「AlphaTestEffect」「BasicEffect」「DualTextureEffect」「EnvironmentMapEffect」「SkinnedEffect」クラスが追加された。
この機能は、Microsoft.Xna.Framework.Graphics.Extensions.dllアセンブリにある。
※Effectクラスは、シェーダ(HLSL)をまとめたエフェクト(.fx)を扱うクラス。

レンダーターゲット

XNAのRenderTarget2Dクラスに対応。

マルチサンプリング

RenderTarget2DとDrawingSurfaceでマルチサンプリングに対応する。

自作プログラムをRCへ移行してみました

 「エフェクト」「レンダーターゲット」「マルチサンプル」が入ったようなので、Siliveright 5 RCでは、3D周りを構築するAPIとして、困ることはなくなったと思います。そこでひとまず、新機能はさておき、Beta段階で作成した自作プログラムに変更を加えて、Betaと同様の動作するようにしてみました。

「モデルビューア in Silverlight 5 Beta + XNA」を「モデルビューア in Silverlight 5 RC + XNA」へ
Betaのコードの主な変更箇所 RC用への変更例 理由
using Microsoft.Xna.Framework.Silverlight; using System.Windows.Graphics; Microsoft.Xna.Framework.Silverlight 名前空間の機能は、System.Windows.Xna.dll アセンブリになった。
GraphicsDeviceManager 上記usingディレクティブの変更 上記により、Microsoft.Xna.Framework.Silverlight.GraphicsDeviceManagerクラスは、System.Windows.Xna.dll アセンブリのSystem.Windows.Graphics.GraphicsDeviceManagerクラスになった。
DrawEventArgs e; 〜 e.GraphicsDevice; var graphicsDevice = GraphicsDeviceManager.Current.GraphicsDevice; 〜 DrawEventArgsクラスからGraphicsDeviceプロパティは消え、GraphicsDeviceManager.Current.GraphicsDeviceプロパティを使うことになった。
IVertexType (自前実装) Silverlight 5 (XNA)のものに変更 IVertexTypeが定義されたので、自前の定義はコメントアウト