草庐IT

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

coder 2023-06-21 原文

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

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

第一步是检查 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/

有关c# - Linux 上的 MonoGame 无法加载效果 Assets的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  4. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  5. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  6. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  7. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  8. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  9. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  10. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

随机推荐