3

我正在为 D3D9、D3D10、OpenGL 和 XNA 之间的跨平台游戏和工具制作 .NET 3D 库,它们将在 Windows、XBOX、Phone7、MacOSX 和 Linux(可能是 iPhone 和 Android)上运行。

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

如果有人知道解决此问题的方法并且可以发布一些代码或将我指向正确的方向,那将是很好的 tnx。

4

2 回答 2

5

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

正如Shawn Hargreaves 在他的博客中解释的那样,仍然有几种方法可以在运行时编译效果内容(或任何其他类型的内容),但仅限于 Windows 游戏。

我个人认为 Shawn 举例说明的第 4 种方法既容易实现又健壮;您可以在运行时导入您想要的任何类型的内容,而且您不必费尽心力地设置任何 MSBuild 项目。

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

于 2011-01-23T19:13:22.660 回答
4

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

这个问题的答案是使用命令行实用程序 (CompileEffect),它使用 Content Pipeline 将 .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

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

于 2010-12-27T20:42:51.267 回答