Browse by Tags

Tagged Content List
  • Blog Post: XNA Game Studio 4.0 Refreshに更新しよう

    XNA Game Studio 4.0 Refreshに更新しよう 去年の10月にXNA Game Studio 4.0 Refresh が公開されました。これは、 Windows Phone SDK 7.1 の中に含まれる形でリリースされ、内容もWindows Phone 7.1の 新機能追加 が主だったので私もツイッターの方でつぶやく程度で済ませてました。 ですが、Windows Phone向けの新機能以外にもVisual Basic対応やバグフィクスが含まれているので、WindowsやXbox 360で開発している人でも更新する価値は十分にあると思うのでここでも紹介します。 ...
  • Blog Post: 動的テクスチャとその注意点

    パーティクルシステムなどで動的に頂点データを変更する場合、GPUとCPUが競合しないように、DynamicVertexBuffer(動的頂点バッファ)、そしてNoOverwriteとDiscardオプションを使う方法を 以前紹介 しました。 では、テクスチャを動的頂点バッファのように扱うにはどうしたら良いでしょうか?そもそもDynamicTexture2Dというクラスもないし、 Texture2D.SetData に SetDataOptions を受け取るメソッドもない……。 その答えは XNA Game Studio 4.0でのTexture...
  • Blog Post: 乗算済みアルファとは? その2: コンポジション

    前回の投稿 からものすごーく間があきましたが、乗算済みアルファの話がTwitterの方で盛り上がったので、思い出したように続きを書いてみます。 前回は今まで多く使われてきた補間アルファの問題とそれを解決するための乗算アルファの紹介をしました。今回は乗算済みアルファの真骨頂である半透明を使ったコンポジションを紹介します。 コンポジションの使い道 レースゲームでは、ゲーム内で複数の車を購入でき、さらに購入した車の各パーツを変更することができるという機能は一般的なものです。中には自分で描いた絵を車に張るなんて言うこともできるものもあります。こういったレースゲームでは、購入した車の一覧はガレージメニュー内でサムネイル表示され...
  • Blog Post: 動的頂点バッファのNoOverwriteとDiscard

    今まで何度か動的頂点バッファについて触れてきましたが、実際のコードがどうなるのかは記事の中では紹介していませんでした。実は今までに紹介してきた サンプル の中で WritableVertexBuffer<T> というクラスがすでに実装されているので、このクラスを紹介します。 「GPUはいつ描画するのか?」 の記事の中で SetDataOptions.NoOverwrite の説明をしました。この記事の中でNoOverwriteというのはプログラムがドライバへ伝えるヒントで、GPUが頂点バッファをアクセスしている領域にはSetDataで上書きすることはありませんよということを述べました...
  • Blog Post: XNA 3.1から4.0への更新

    英文ですが、XNA 3.0からXNA 4.0への更新についてのまとまった情報があるので紹介します。 http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet/
  • Blog Post: XNA Game Studio 4.0 Language Pack(日本語)がリリースされました

    日本語のXNA Game Studio 4.0Language Packがリリースされました。これでVisual Studioのメニューやプロジェクトテンプレートが日本語化されるのはもとより、日本語のヘルプドキュメントも付いているので英語を読むのが苦手という人でも安心してXNA 4.0を使えるようになりました。 注意点としてはLanguage Packとしての提供になるので一旦英語版をインストールした 後 にLanguage Packをインストールする必要があります。英語版のインストール方法については 以前の記事 が参考になると思います。また、英語版を既にインストールしている場合はLanguage...
  • Blog Post: XNA Game Studio 4.0がリリースされました

    XNA Game Studio 4.0がリリースされました。前述のとおり、XNA Game Studio 4.0はWindows Phone Developer Toolsに含まれる形でリリースされました。 Windows Phone Developer Toolsのダウンロード リリースノート CTP版やベータ版のWindows Phone Developer Toolsをインストールしている場合はリリース版をインストールする前に以前のバージョンをアンインストールする必要があります。 Windows Phone Developer ToolsにはVisual Studio Express for...
  • Blog Post: XNA Game Studio 4.0の乗算済みアルファ機能

    3D対応のグラフィクスカードが登場してから、グラフィクス・プログラマー、というより、デザイナーさんの長年の悩みのひとつとして、スプライトなどの画像のエッジに意図しない色がでてしまうという、色のにじみ問題があります。 この問題に直面したデザイナーさんの多くはグラフィクス・プログラマーに相談しますが、 「バイリニア・フィルタのせいだね、絵の方を変えるようにしてね」 と、言われることが多いと思います(私も昔はそう返答してました)。デザイナーさんの中にはカラー部分とアルファチャンネル部分を分けて時間を掛けて修正したり、エッジ部分を処理するツールを使ったりしていました。ですが、プログラマーに絵を渡す前にいちいちツールを通す手間があり...
  • Blog Post: XNA Game Studio 4.0の画像コーデック

    歴史的背景 その昔、私達がXNA 1.0を設計していた時、テクスチャやモデルの読み込みをするのに単にD3DXのラッパーを作りよりも新しいものにしようと決めました。これは、後にコンテント・パイプラインと呼ばれるものでした。 しかし、1.0ベータをリリースした時にはコンテント・パイプラインは未完成でした。テクスチャ読み込み関数がなければ、せっかくのグラフィクスAPIを試すこともできません。このままではリリースできないので、急遽追加されたのがTexture2D.FromFileメソッドでした。 FromFileメソッドはWindows上でしか使えません。なぜなら、D3DXはXbox 360上ではサポートされていないからです...
  • Blog Post: XNA Game Studio 4.0のエフェクト・コンパイラーとコンテント・パイプライン・オートメーション

    今までのXNAにはEffect.CompileEffectFromSourceメソッドがありました。Xbox 360上ではランタイム時にシェーダーのコンパイルは使えず、Windows上でのみ使えるメソッドでXbox 360とwindows用のシェーダーをコンパイルすることができました。しかし、この方法では以下の問題がありました。 ランタイム用のAPIのように見えるのに、すべてのプラットフォームで使えない Windows再配布コンポーネントにはXbox 360用のシェーダーコンパイラーが含まれている。これはWindows専用のゲームを作っている人達にとってはスペースの無駄遣いになる 新しいプラットフォームを追加するたびに...
  • Blog Post: XNA Game Studio 4.0のEffectインターフェース

      XNAでモデル描画する場合は、一般的に以下のようなコードを書きます。 Matrix [] transforms = new Matrix [model.Bones.Count]; model.CopyAbsoluteBoneTransformsTo(transforms); foreach ( ModelMesh mesh in model.Meshes) { foreach ( BasicEffect effect in mesh.Effects) { effect.World = transforms[mesh.ParentBone.Index] ...
  • Blog Post: 新しいエフェクトとコンテントパイプライン

    今までのXNAではコンテント・パイプライン内では以下のようにしてマテリアルを読み込んでいました。 もし、FBXかXファイルモデルが.fxファイルを参照している場合、EffectMaterialContentとしてインポートし、ゲーム内ではカスタム・エフェクトとなります。 それ以外であれば、BasicMaterialContentとしてインポートして、実行時にはBasicEffectとなります。 BasicMaterialContnetのテクスチャ、ディフューズカラー、スペキュラ係数といったプロパティはFBXやXファイルのマテリアルの値を設定します。 もし、BasicEffectがサポートしていないプロパティがあった場合は...
  • Blog Post: ビルトイン・エフェクトの組み合わせとパフォーマンス

    私のMIXでのトーク から拝借して、XNA Game Studio 4.0の 五つのビルトイン・エフェクト と、 その最適化のための組み合わせ の情報をまとめて紹介します。 簡単に言えば、シェーダー命令数が少ないほど実行速度が速くなります。ただし、 CPUバウンドだったり 、 GPUの別の部分がボトルネック の場合は効果がないことに注意してください。 BasicEffect   頂点シェーダー ピクセルシェーダー LightingEnable = false 5 1 頂点ライティングx1 40 1 頂点ライティングx3 60 1 PreferPerPixelLighting = true...
  • Blog Post: XNA Game Studio 4.0で追加された新しいビルトイン・エフェクト

    訳者注:今回はちょっと口語訳っぽくしてみました。途中までフォーマルな感じで訳していたのですが、原文の雰囲気と合わなかったので、合わせて口語訳にしてみました。 この記事は記録(?)されたもので、Shanwは今いません(今週末に結婚するんだ、俺)(訳注:死亡フラグみたいですが、Shawnは無事に結婚して、新婚旅行から帰ってきました) チェス盤と麦(もしくは米)の問題 を聞いたことがあるかい?シェーダープログラマーは同じ問題を抱えているんだ。 <チェス盤と麦の問題とは> 13世紀のアラビアの数学者イブン・アル・バンナがチェス(西洋将棋)の問題解法で等比級数の解法について述べています...
  • Blog Post: Game Studio 4.0におけるBasicEffectの最適化

    Game Studio 4.0で、BasicEffect API自体は変わっていませんが、今までより更に最適化が進んでいます。 以前のバージョンでのBasicEffectはシェーダープログラムの手始めとして初心者向けに設計されたものでした。なぜならシェーダープログラムの知識のある人達は直ぐに自前のシェーダーを書くだろうと思っていたからです。ですから、BasicEffectの最適化には多くの時間を割かず、WindowsとXbox 360上でそれなりの速度がでる程度の最適化しかしていませんでした。 Windows Phone対応によって、この優先度は以下の二つの理由によって変更されました。 携帯用GPUはWindowsやXbox...
  • Blog Post: XNA Game Studio 4.0におけるViewport

    XNA Game Studio 4.0ではViewportオブジェクトを使う場面で便利な機能を追加しました。まずは以下のコンストラクタを追加しました。 public Viewport( Rectangle bounds); public Viewport( int x, int y, int width, int height); そして、BoundsプロパティをViewport、Texture2DとPresentationPrametersへ追加しました。 public Rectangle Viewport .Bounds{ get ; set ; } public...
  • Blog Post: Game Studio 4.0におけるElapsedRealTimeとTotalRealTime

    新しい機能についてのブログポストを書くとき、よく、今までに書いたデザインドキュメントや、バグデータベースを参考にします。殆どの場合はその内容をそのまま引用することはないのですが、今回は既存の文章がそのまま使えるので、盗用することにしました。 すべでは私が登録したバグの記述から始まります。 「GameTimeクラスのRealTimeメンバーは混乱のもとだし、特に良い使い道もない。更に通常、常にRealTime以外のメンバーを使うことが良いというのであれば、混乱を少なくするためにRealTimeメンバーを削除するのがいいのではないか?」 これは既存のAPIに変更を加えることになるので、DCR(Design...
  • Blog Post: 消えたResolveBackBufferとResolveTexture2D

    Game Studio 4.0ではResolveBackBuffer APIとResolveTexture2Dクラスが削除されました。 このAPIは基本的なRenderTarget2D(GPUによって描画された結果がテクスチャとなる)と同様のもので、多少の違いがあるだけでした。重複する機能を提供することが常に悪いこととは限りませんが、完全に同じ機能を提供するときには注意が必要です。 重複している機能を提供する場合、それらの機能を提供したと仮定して、フレームワークを使っている人たちからの「どっちを使ったら良いの?」という質問にどう答えるかが判断基準となります。もし「BよりもAを使うと良いよ。Bのことは忘れちゃってください...
  • Blog Post: XNA Game Studio 4.0におけるRenderTargetの変更点

    XNA Game Studio 4.0ではユーザービリティ向上、エラー数低減を目指してAPI設計をしました。そのひとつがRenderTarget関連のAPI変更です。 いまだに共通して混乱の元となっているのはRenderTargetUsage.DiscardContentsの振る舞いですが、この振る舞いは変わっていません。PreserveContentsモードはXbox 360上では非常に遅く、Windows Phone上では更に遅くなってしまいます。これはタイルレンダリングなどの分割レンダリングを採用するプラットフォームでは良くあることです。ですから、Windows PhoneではXbox...
  • Blog Post: XNA Game Studio 4.0における頂点データ

    以前のXNAでは、VertexBuffer(頂点バッファ)は弱い方定義がされたバイト列の入れ物でしかありませんでした。これとは別にVertexDeclaration(頂点宣言)オブジェクトによって、これらのバイト列をどのようなフォーマットとして扱うのかを指定していました。 XNA Game Studio 4.0ではVertexBuffer生成時にVertexDeclarationを指定することでVertexBufferとVertrexDeclaratoinを関連付けるようになりました。このことによってVertexBufferは強い型定義となり、頂点宣言を含む必要な情報を提供できるようになりました...
  • Blog Post: SpriteBatchとEffect

    SpriteBatchにEffectを指定する 前回の投稿ではXNA Framework 4.0で新しくなったSpriteBatch.Beginメソッドの紹介と、任意のレンダーステートを使ったものを例として紹介しました。今回はSpriteBatch.BeginメソッドにEffectを設定する方法を紹介します。 前回も説明したとおり、Effectを設定する場合は以下の二通りのシナリオを考えて設計されています。 通常のスプライト描画で、主にピクセルシェーダーによってカスタマイズする View、Projectionなどを使用した3D効果 1のシナリオでは、例えば画面全体をセピア色に変更したりする単純なカラー操作や...
  • Blog Post: SpriteBatchとレンダーステート

    SpriteBatchをカスタマイズしたい SpriteBatchクラスはXNA Frameworkの中で最も使用頻度の高いクラスで、特に2Dゲームでは必須の機能です。私達がXNA GSE 1.0でSpriteBatchをデザインしたときには、一般的な2Dスプライト描画ができることが主な目的でした。確かにSpriteBatchは通常の2Dスプライトを描画するには非常に便利な機能ですが、いくつかの要望がありました。 アルファブレンドをはじめとしたレンダーステートを自由に設定したい カスタムエフェクトと併用したい 3D効果が使いたい 1についてですが、今までにSpriteBatch...
  • Blog Post: 消えたRenderState

    カテゴリ分けされたレンダーステート XNA Game Studio 3.1では描画するときに欠かせないレンダーステート情報を変更するには、GraphicsDevice.RenderStateプロパティを介する必要がありました。プロパティ化したことにより、デバッガ上で即座にレンダーステートを確認できるというのはC++でDirectXを使っていた時よりも格段に使いやすくなっていました。 ですが、RenderStateクラスには実に70近いプロパティがあり、中には複数のプロパティを正しく設定しないと思い通りに描画できないといった問題があったり、Visual Studio上で編集しているときでもインテリセンスに表示される候補が多すぎるという問題がありました...
  • Blog Post: XNA Game Studio 4.0、グラフィクスAPI・リファクタリング

    XNA Frameworkの歴史 XNAチームは発足当初から他のMicrosoftのプロダクトチームに比べると非常に少ない人数です。人数的に見て他のチームがXNAチームの10倍の規模なんていうのは普通にあることで、時には100倍の人数規模のチームと仕事をするなんてこともあります。 私達がXNA Game Studio 1.0の時にFrameworkを設計したときにはXbox 360上で.Net CFを動くようになったのは最初のリリースの四ケ月程前でした。もちろん、たった四ケ月という期間と少ない人員でFrameworkの設計、実装、そしてテストをすることはできないので、Xbox 360上で...
  • Blog Post: 細分化されたXNA Game Studio 4.0アセンブリファイル

    SilverlightからXNAフレームワークを使用する Windows Phone 7 シリーズでアプリケーションを作る場合は、SilverlightとXNA Frameworkを使うことができます。SilverlightはMicrosoft Expression Blendとの連携で簡単にUI構築ができるという利点があり、XNA Frameworkは3Dを筆頭に高パフォーマンスが求められるゲームアプリに向いています。 Silverlightでアプリケーションを作っているときにXNA フレームワークの機能、特に追加されたばかりのダイナミックオーディオ機能や、GamerServices機能を使いたいというケースがあります...
Page 1 of 3 (74 items) 123