(XNA 4.0)是否有(XNA 3.1“Effect.CompileFromFIle”)等价物?

时间:2010-12-27 18:03:58

标签: compiler-construction xna compilation effect xna-4.0

我正在为游戏制作.NET 3D库。 D3D9,D3D10,OpenGL和DSP之间的跨平台工具XNA将在Windows,XBOX,Phone7,MacOSX& Linux(也许是iPhone和Android)。

所以我的问题是......,我希望能够像在XNA 3.1中一样在XNA 4.0中编译效果文件... 微软用于取消此功能的借口并不合法,因为它会杀死XNA用于为您的游戏制作工具(如效果编辑器)。

如果有人知道为此而努力解决这个问题。可以发布一些代码或指向我正确的方向将是很好的tnx。

2 个答案:

答案 0 :(得分:5)

此功能已被用于保持Xbox和Windows游戏之间的一致性。 Xbox无法在运行时编译着色器,但在XNA 3.1中,Effect.CompileFromX方法包含在Xbox和Windows共有的运行时中。

作为Shawn Hargreaves explained in his blog,仍然有几种方法可以在运行时编译效果内容(或任何其他类型的内容),但仅限于Windows游戏。

我个人发现Shawn的第四种方法是易于实现和健壮;您可以在运行时导入任何类型的内容,而不必为设置任何MSBuild项目而烦恼。

修改 我注意到这篇文章的答案中列出的所有方法(截至2011年1月23日14:50-7UTC)都需要引用一些XNA内容管道库,这意味着用户可能必须安装XNA才能能够使用你的产品...

答案 1 :(得分:4)

我还在App Hub上发布了这个问题。 http://forums.create.msdn.com/forums/p/70737/431600.aspx#431600

这个问题的答案是使用命令行实用程序(CompileEffect),该实用程序使用内容管道将.fx源文件编译为可以直接传递给XNA Framework Effect类构造函数的二进制blob。

这是为任何人寻找回答此问题的链接 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

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