我一直在研究如何使用monogame。 到目前为止,我唯一能理解的是效果。我无法找到有关如何制作或使用它们的完整教程。
我知道它们存储在.fx文件中,而且它们是用某种语言编写的。
你能告诉我一些指示吗?我可以在哪里下载效果?我应该用它来制作它们?我可以在其他语言中使用这些效果吗?我该怎么去谷歌了解更多?答案 0 :(得分:2)
至于如何在使用MonoGame的应用程序中使用它,请在LoadContent函数中使用它:
var effect = Content.Load<Effect>("EffectNameHere");
现在具体回答你的问题:
到目前为止,我唯一无法理解的是效果。
效果基本上只是着色器的MonoGame / XNA包装器。着色器基本上是一个在GPU上运行的小程序。着色器可以有不同的阶段,具体取决于您使用着色语言定位的api(用于OpenGL的glsl,用于DirectX的hlsl,用于Metal的金属等)。请注意,您只能使用MonoGame而不是glsl来定位hlsl。这是因为当MonoGame尝试在OpenGL上下文中使用代码时,着色器的字节码会直接转换为glsl 字节码。请查看this页面了解hlsl的各个阶段。
我可以在哪里下载效果?
你通常不这样做,并自己写。无论哪种方式,找到hlsl着色器比找到glsl着色器(OpenGL是一种普遍的东西......)更难,然后可以将其移植到hlsl。
我应该用它来制作它们?
这是你的选择,无论是记事本,VSCode,记事本++还是其他任何类似的东西。我个人建议使用Visual Studio附带的hlsl编辑器(注意:你必须安装一个包来获取图形和着色器工具)。然后,它只是试验和错误,直到你得到它编译,或直到它工作。
我可以在其他语言中使用这些效果吗?
效果主要用于MonoGame / XNA,但,任何可以访问DirectX包装器/本机实现的语言都可以使用相同的hlsl代码(IE C ++ )。然后,DirectX api可以以类似的方式编译它。
另外一条建议,如果您不仅要使用Pixel着色器阶段和使用MonoGame的Vertex着色器阶段,那么您运气不佳。您必须实现它,或者等到支持
的release编辑: 我也忘了给你最重要的一点! MonoGame Community