GSE 1.0 Refresh API その詳細

GSE 1.0 Refreshは1.0とバイナリ互換、つまり1.0でコンパイルしたものが、そのまま1.0 Refreshで動作するようになっているので、1.0のAPIはそのままで、新しいAPIが追加されています。

ここにRefreshで追加されてAPIのリストがあります。今まで概要は説明してきましたが、詳細は省いていたので、以下に追加されたAPIの詳細を書きます。

 

  • Math関連
    • BoundingBoxとBoundingFrustumのGetCornersメソッドを追加。Cornersプロパティと違って予め確保した配列を指定できるので、GC発生率を抑えることができます。
    • Curveクラスにタンジェントを計算するComputeTangentComputeTangentsメソッドを追加。現在のCurveKeyの状態でCurveTangentで指定したタンジェントを計算します。例えば、CurveTangent.Smoothを指定することで、滑らかに繋がった曲線になるようにタンジェントを計算します。
    • MatrixQuaternionCreateFromYawPitchRollメソッドを追加。ヨー、ピッチ、ロールの角度を指定することで、回転行列やクォータニオンを生成します。
    • Matrix.CreateReflection。指定したPlaneの位置でオブジェクトを鏡で反射させた場所に移動させる行列を生成します。水面や鏡の反射されたものの描画に使えます。
    • Matrix.CreateShadow。オブジェクトを指定したPlaneとライト方向によって、射影行列を生成します。平面への投射しかできませんが、簡単な影の描画に使えます。
    • Matrix.Decompose。行列をスケール、回転、移動の三つの要素を取り出します。指定する行列はスケール、回転、そして移動の順で組み合わされたいう前提があります。
    • Matrix.Transformメソッド。指定した行列を、指定されたクォータニオンで回転させます。
    • Vector2、Vector3、Vector4のTransform、TransformNormalメソッドで配列が指定できるようになった。
    • Vector2、Vector3、Vector4のTransform、TransformNormalメソッドでQuaternionが指定できるようになった。
    • RayとPlaneの交差判定、Ray.Intersectsメソッド追加。線の始点と面の距離を返します。
    • RectangleとPoint、Rectangle同士の交差、包括判定、ContainsIntersectsメソッドの追加。
  • グラフィクス
    • 文字描画の為のSpriteFontクラスの追加。文字列を描画したときの領域を計算するMeasureStringメソッドなどがあります。実際の描画はSpriteBatch.DrawStringを使います。
    • SpriteBatch.BeginでMatrixを指定できるようになった。画面分割などのゲームを作るとき等、Drawメソッドを呼ぶときに自前で移動させたり、スケールさせたりする計算をする手間が省けます。
    • BasicEffect.PreferPerPixelLightingプロパティの追加。このプロパティにtrueにすることで、ピクセル単位のライティングを使用するようにします。ピクセル単位のライティングにはシェーダーモデル2.0以上のビデオカードが必要ですが、BasicEffectはそれを自動判別するので気軽に使えます。
    • GraphicsDeviceで、Vector2、Vector3、Vector4、Quaternion、そしてMatrixといった構造体をピクセル/頂点シェーダーの定数レジスタに直接設定できるようになりました。
  • オーディオ
    • XACT 3Dオーディオサポートの為に、AudioEmitterAudioListenerといったクラスが追加されています。3Dオーディオは5.1chスピーカーで、後ろの方から音が聞こえてきたりするのはもちろん、救急車が目の前を走り去るときに起こるドップラー効果もサポートしています。ここにサンプルコードがあります(ねこの泣き声のドップラー効果つき)。
  • コンテント・パイプライン
    • SpriteFontをサポートするためのFontDescriptionFontDescriptionProcessorの追加。
    • 任意の画像、例えばコントローラーのボタンイメージをSpriteFontとして使う為のFontTextureProcessorの追加。
    • 3DテクスチャをサポートするためのTexture3DContentの追加。
    • 外部のコンテントを参照するときに使える、ExternalReference<T> クラスの追加。
    • コンテントクリーンビルドのためのMSBuild用のタスク、CleanContentの追加。

 

この殆どの機能は、フィードバックを元に追加されています。特にMath関連の追加機能は全てフィードバックを元にしたものです。逆に言えば、フィードバックさえすれば、その機能が次のリリースに反映される可能性が非常に高いということです。日本語の報告もMicrosoft Connectにできるようになったので、沢山のフィードバックをお待ちしております。