web-dev-qa-db-ja.com

XNAとDirectX(C#)の比較

PC開発の観点から(XboxとZuneを除く)、

XNAとC#DirectXの違いは何ですか? C#DirectXには、XNA(速度、ロイヤリティなど)に比べて大きな利点がありますか?

この2つは、管理されていないC++ DirectXの速度と比較してどうですか?

ゲームプログラミングに関して、業界はどこに向かっていますか?

50
yxk

実際にアンマネージコードを書くのが得意であれば、DirectXの上に高速なグラフィックエンジンを書くことができるでしょう。ただし、愛好家にとって、XNAには2Dおよび3Dゲーム開発の両方で十分なのパフォーマンスがあります。

これは優れたチャンネル9ビデオです Xbox 360でXNAが構築したレーシングゲームを実行する場所です。フルHDでも良好に動作します。 XBox Live Arcadeゲームのいくつかは、XNAコミュニティによって開発されました。

私が思い出すように、C#DirectXに関しては、呼び出されたままのManaged DirectXは、XNAが基本的に置き換えるため、公式にはサポートされなくなりました。私は間違っている可能性があります。それを見てから非常に長い時間がかかりました。

XNAとManaged DirectXのパフォーマンスの違いは、本質的には同じものであるため、ごくわずかです。 XNAには、記述する必要のある定型コードの量を減らすための便利なビットがいくつかあります。

53
Soviut

Xna Game Studioのものはゲーム中心の問題の解決に焦点を当てていますが、Xna game studioのもののパフォーマンスはまともなメトリックスを見ることなくマネージドダイレクトxよりも悪いと言うポスターには疑問があります。

MS以外の独立したグループがSlimDxと呼ばれるプロジェクトを作成しました- http://slimdx.mdxinfo.com/ ゲームではなくアプリケーションを作成している場合質問)その後、それは検討する価値があるかもしれません。

業界では依然としてゲームのガットにC++を多用していますが、XBox LiveのコミュニティゲームセクションでXNA Game Studioを使用して完全にマネージコードで記述され、XBox Arcade自体でリリースされたゲームのリリースが成功しています。コミュニティのゲームでどれだけの人が作ったかについて、すぐに興味深い統計がいくつか出てくるはずです。

多くの定価ゲームではC++を使用していますが、実際のゲームロジックにはLuaのようなものがあります...そして、Luaはその速さで知られていません!

C#には優れた学習曲線があり、業界のツールプログラマーによって使用されています-これは、あなたのベルトの下にある便利な言語です。 C++は優れた言語ですが、機能的なコードを作成するにはより多くの規律が必要です。 C#は動的に変更でき、コンパイル時ではなく実行時にループを展開するなどの処理を実行できます-優れたC#は、読みやすいC++と同等またはそれ以上に高速になりますが、使用方法を知っておく必要があります。非常にタイトなループでは、特定の状況でC++とAssemblerが勝つ場合があります。多くの場合、C++を使用するゲームでは、独自のメモリ戦略を使用してカスタムアロケータが作成され、通常のアロケータに起因するフラグメンテーションが試行されます...そのようなことは、。ガベージコレクターの長所(独自のC++実装で行う必要のあるものと同じ)であれば、.Netでのこのような低レベルの実装の詳細について心配する必要はありません。

ゲーム開発に入り、言語を決定することを検討している場合(行間を読むことは、その質問の行で行く場所のようです)、使用するのに最適な言語は、完成した言語ですC++、Objective C、C#、Flash、Silverlightなど、プロジェクトの最後に表示するプロジェクト。言語が変化し、好意的に出入りするため、採用担当者はしばしば、異なる言語の実績のある習熟を探します。彼らが現在使用しているもの-そして完成した作品のポートフォリオはそれを行うでしょう。

31
paulecoyote
  1. XNAとDirectXは、同じ問題を解決するための非常に異なる実装であり、高性能なグラフィック集約型プログラミングです。どちらも2D、3D、オーディオ、およびネットワークコンポーネントをサポートしています。 DirectXは、XNAがマネージコードである場合にのみアンマネージされます。
  2. DirectXのマネージ実装があります。これは、DirectX呼び出しのラッパーですが、現在のリリース後に更新されないため、気にしません。
  3. XNAは、アンマネージDirectXのラッパーではありません。 DirectXの一部を使用しますが、ラッパーではありません。
  4. 業界はいまだにアンマネージドDirectXに設定されているようです-主要なエンジン企業はすべてC++、ASMでコーディングし、DirectXを単独で、またはOpenGL for Linux/Macバージョンと共にサポートしているためです。マイクロソフトがDirectXマネージラッパーを「ドロップ」し、XNAを使用するように人々に指示しているという事実は、マネージド開発者を押し進めていることを示しています。
17
Robert MacLean

現時点では、MicrosoftはMetroスタイルアプリでXNAをサポートする予定はないようです。 XNAの代替および現在非推奨となっている「Managed DirectX」は、 SharpDx です。これはMetroスタイルアプリの作成に使用でき、XNA、SlimDX、およびWindows APIコードパックに対して ベンチマーク が好意的に使用されています。

5
Dave Maff