gpt4 book ai didi

c# - Linux 上的 MonoGame 无法加载效果 Assets

转载 作者:IT王子 更新时间:2023-10-29 00:36:02 27 4
gpt4 key购买 nike

编辑:问题现已解决,我在此处包含详细信息以帮助遇到此问题的其他人,因为解决起来并不那么简单。

基本上,它归结为使用开发分支进行更新。

第一步是检查 monogame 开发分支,这将不包括 thirdparty/libs 子模块,因此您还需要更新它以便能够编译源代码。

在此之后,您可以编译 MonoGame.Framework.Linux.sln,并更新项目中的引用以指向新的 dll 文件。

这仍然不会加载效果文件,除非它们是使用最新版本的内容处理器创建的,因此您需要转到 Windows 计算机,检查开发分支(和库) - 或者复制它们从你的 linux 系统 - 然后编译 MonoGame.ContentPipeline/ContentProcessors/MonoGameContentProcessors.sln

您需要在您的内容项目中更新对 MonoGameContentProcessors.dll 的引用,您还需要将 MonoGame.ContentPipeline\ContentProcessors\bin\Release\libmojoshader_32.dll 文件重命名为简单的 libmojoshader.dll。

完成所有这些后,您最终可以按预期使用它 - 从 .fx 文件构建 .xnb 文件并将它们添加到 linux 项目中。

希望这些信息对某人有用。

============================================= ==原帖:

我刚开始使用 MonoGame,我正在尝试让一个非常简单的应用程序(旋转立方体)在 Windows 和 Linux 上运行 - Windows 证明不是问题,但我在获取 .fx 文件时遇到了问题在 Linux 上工作。

我已经设置了一个“MonoGame 内容项目”,向其中添加了 .fx 文件,选择了“MonoGame Effect”处理器,将构建配置设置为 Linux - 这一切似乎都有效,我得到了一个 .xnb 文件输出目录。

我在搭建linux工程的时候,把.xnb复制到“Content”文件夹(根目录相应设置),使用下面的代码加载效果(和windows上的代码一样):

CubeEffect = Content.Load<Effect>("Effect1");
CubeEffect.CurrentTechnique = CubeEffect.Techniques["Technique1"];

这会导致应用程序崩溃并出现以下错误:

Microsoft.Xna.Framework.Content.ContentLoadException: Could not load Effect1 asset!

最初我认为这是文件名、目录名或某些不正确设置的问题。但是,我尝试将 .png 文件添加到内容文件夹并加载它:

Texture2D Tex = Content.Load<Texture2D>("bg.png");

这工作得很好(在调试器中检查了 Texture2D 的属性,它有文件的正确细节)。

我在转换着色器文件时是否遗漏了某个步骤?是否有一些我没有看到的非常明显的东西?

如果不是,有没有人知道它为什么会这样,或者有什么方法可以从中得到更详细的错误,比如它无法加载 Assets 的实际原因?

编辑:查看反汇编中实际抛出错误的点后,它似乎找到了文件,但没有将其识别为任何有效的资源类型——这可能是某种版本/兼容性问题?

最佳答案

在尝试将着色器加载到 Monogame 中时,这是一个非常常见的问题。我尝试过,但未能将我的自定义着色器加载到 Monogame 框架中。

您需要从 develop3d 分支编译,而不是官方版本。您还需要将 HLSL 着色器转换为 MojoShader 兼容语法。然后您需要从 Monogame 内容导入器(需要手动配置)加载效果,或者将您的着色器添加为嵌入式资源并将其加载到您的项目中以便使用它。

我自己从来没有真正做到过。根据我的在线阅读,Monogame 框架的这个特定部分还没有完全准备好迎接黄金时段。

这里有一些关于它的信息。他们确实没有提供太多关于此的信息,因为我怀疑他们知道这是非常有问题的:

https://github.com/mono/MonoGame/wiki/Effects-And-Shaders

关于c# - Linux 上的 MonoGame 无法加载效果 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17067028/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com