是否有(XNA 3.1“Effect.CompileFromFILE”)相当于(XNA 4.0)?

问题描述 投票:0回答:2

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

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

如果有人知道解决此问题的方法并且可以发布一些代码或为我指出正确的方向,那就太好了。

compilation xna xna-4.0 effect
2个回答
5
投票

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

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

我个人认为 Shawn 举例的第四种方法既易于实施又稳健;您可以在运行时导入所需的任何类型的内容,并且不必经历设置任何 MSBuild 项目的所有痛苦。

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


4
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.