如何使用或制作"效果"在monogame?

时间:2018-03-04 10:30:55

标签: c# xna shader monogame effects

我一直在研究如何使用monogame。 到目前为止,我唯一能理解的是效果。我无法找到有关如何制作或使用它们的完整教程。

我知道它们存储在.fx文件中,而且它们是用某种语言编写的。

你能告诉我一些指示吗?我可以在哪里下载效果?我应该用它来制作它们?我可以在其他语言中使用这些效果吗?我该怎么去谷歌了解更多?

1 个答案:

答案 0 :(得分:2)

哇,这个广泛的问题......你应该从googling开始吧 然后,阅读一些教程,我推荐RB Whitaker 然后,使用一些C#或C ++或C或Java的知识(HLSL与那些相似),查找如何为MonoGame编写效果。尝试查看示例。另外,如果您遇到某些问题,查看MonoGame和BasicEffect源代码并不是一个坏主意。此外,大多数XNA的东西仍然适用于MonoGame,因此研究XNA 以及 MonoGame是一个好主意。

至于如何在使用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