2010-12-27 12 views
3

私はD3D9、D3D10、OpenGLの間のクロスプラットフォームです.NET 3Dライブラリのゲームのための&のツールを作ってるんだWindowsの、XBOX、Phone7、MacOSXの& Linuxの(たぶんiPhone &アンドロイド)上で実行されます& XNA。(XNA 3.1 "Effect.CompileFromFIle")は、(XNA 4.0)に相当しますか?

私の質問は... XNA 3.1のようにXNA 4.0でエフェクトファイルをコンパイルできるようにしたい... この機能を使用するためのMicrosoftの言い訳は、XNAをあなたのゲーム用のツールを作るために使われています(エフェクトエディタのように)。

誰でもこの問題を回避する方法を知っていれば、コードを投稿したり、正しい方向に向けることができます。tnx。

答えて

4

また、この質問はApp Hubに投稿されました。 http://forums.create.msdn.com/forums/p/70737/431600.aspx#431600

この質問に対する答えは、コンテンツパイプラインを使用して.fxソースファイルをXNA Framework Effectクラスコンストラクターに直接渡すことができるバイナリBLOBにコンパイルするコマンドラインユーティリティ(CompileEffect)を使用することです。あなたがFXコンパイラ用のドキュメントを見てする必要がありますシェーダをコンパイルするには:ここで

http://create.msdn.com/en-US/education/catalog/sample/stock_effects

EDIT(より良いリンク)が...見ている誰のためにこの質問に答えるためのリンクです。 LINK:https://msdn.microsoft.com/en-us/library/windows/desktop/bb232919(v=vs.85).aspx

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

+0

リンクが切れています。 – ToolmakerSteve

+0

リンクを更新しました。シェーダのコンパイラドキュメントを見てください。 – zezba9000

+0

ああ、分かります。 XNA Content-Pipeline呼び出しを使用するのではなく、DirectXユーティリティを使用して解決します。 – ToolmakerSteve

5

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

Shawn Hargreaves explained in his blogには、実行時にエフェクトコンテンツ(または他の種類のコンテンツ)をコンパイルする方法はいくつかありますが、Windowsゲームでのみ可能です。

私は個人的に4番目の方法を見つけました。Shawnは実装が簡単で堅牢であることを示しています。実行時に必要な任意のタイプのコンテンツをインポートすることができ、MSBuildプロジェクトの設定に苦労する必要はありません。

EDIT: それがこの投稿への回答に記載された方法の全て(14時2011年1月23日のよう:50-7UTCは)私の注意に来てXNAコンテンツパイプラインの一部のライブラリへの参照を必要とし、ユーザーが製品を使用できるようにXNAをインストールする必要がある可能性があります。