3

私は、Windows、XBOX、Phone7、MacOSX、および Linux (おそらく iPhone と Android) で実行される D3D9、D3D10、OpenGL および XNA 間のクロス プラットフォームであるゲームおよびツール用の .NET 3D ライブラリを作成しています。

だから私の質問は...、XNA 3.1 でできるように、XNA 4.0 でエフェクト ファイルをコンパイルできるようにしたいです...この機能を削除する Microsoft の言い訳は正当ではありません。ゲーム用 (エフェクト エディターのように)。

誰かがこれの回避策を知っていて、いくつかのコードを投稿したり、正しい方向に向けたりすることができれば、tnx は素晴らしいでしょう。

4

2 に答える 2

5

この機能は、Xbox と Windows ゲーム間の一貫性を維持するために削除されました。Xbox は実行時にシェーダーをコンパイルできませんが、XNA 3.1 では、Xbox と Windows の両方に共通のランタイムに Effect.CompileFromX メソッドが含まれていました。

Shawn Hargreaves が彼のブログで説明したように、実行時にエフェクト コンテンツ (またはその他の種類のコンテンツ) をコンパイルする方法はいくつかありますが、それは Windows ゲームのみです。

個人的には、Shawn が例示する 4 番目の方法は、実装が簡単で堅牢であることがわかります。実行時に必要な任意の種類のコンテンツをインポートでき、MSBuild プロジェクトをセットアップするすべての苦労をする必要はありません。

編集: この投稿への回答にリストされているすべてのメソッド (2011 年 1 月 23 日 14:50-7UTC の時点) には、いくつかの XNA コンテンツ パイプライン ライブラリへの参照が必要であることがわかりました。つまり、ユーザーはインストールする必要があるかもしれません。製品を使用できるようにするための XNA...

于 2011-01-23T19:13:22.660 に答える
4

この質問は、回答があった App Hub にも投稿しました。http://forums.create.msdn.com/forums/p/70737/431600.aspx#431600

この質問に対する答えは、コンテンツ パイプラインを使用するコマンド ライン ユーティリティ (CompileEffect) を使用して、XNA Framework Effect クラス コンストラクターに直接渡すことができるバイナリ BLOB に .fx ソース ファイルをコンパイルすることです。

探している人のためにこの質問に答えるリンクは次のとおりです... http://create.msdn.com/en-US/education/catalog/sample/stock_effects

編集 (より良いリンク): シェーダーをコンパイルするには、FX コンパイラーのドキュメントを参照する必要があります。 リンク: https://msdn.microsoft.com/en-us/library/windows/desktop/bb232919(v=vs.85).aspx

リンク 2: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509710(v=vs.85).aspx

于 2010-12-27T20:42:51.267 に答える