如何在单人游戏中使用或制作“效果”?

Rus*_*lan 2 c# shader xna effects monogame

我一直在研究如何使用monogame。到目前为止,我唯一不明白的是什么是效果。我只是找不到任何关于如何制作或使用它们的完整教程。

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

你能给我一些方向吗?哪里可以下载特效?我应该用什么来制作它们?我可以在其他语言中使用这些效果吗?我应该谷歌什么来了解更多?

Opt*_*ach 5

哇,这是一个多么广泛的问题......你应该从谷歌搜索开始。
然后,阅读一些教程,我推荐RB Whitaker的教程。
然后,之后,使用一些 C# 或 C++ 或 C 或 Java(HLSL 类似于那些)的知识,查找如何为 MonoGame 编写效果。尝试查找示例。此外,如果您遇到某些问题,查看 MonoGame 和 BasicEffect 源代码也不错。此外,大多数 XNA 内容仍然适用于 MonoGame,因此将 XNAMonoGame一起研究是一个好主意。

至于如何在使用 MonoGame 的应用程序中使用它,请在 LoadContent 函数中使用它:

var effect = Content.Load<Effect>("EffectNameHere");
Run Code Online (Sandbox Code Playgroud)

现在具体回答你的问题:

到目前为止,我唯一不明白的是什么是效果。

效果基本上只是着色器的 MonoGame/XNA 包装器。着色器基本上是一个在 GPU 上运行的小程序。着色器可以有不同的阶段,具体取决于您使用着色语言的 api(glsl 用于 OpenGL,hlsl 用于 DirectX,metal for,well Metal 等)。请注意,您只能使用 MonoGame 而非 glsl 来定位 hlsl。这是因为当 MonoGame 尝试在 OpenGL 上下文中使用代码时,着色器的字节码会直接转换为 glsl字节码。查看页面了解 hlsl 的各个阶段。

哪里可以下载特效?

你通常不这样做,并自己编写它们。无论哪种方式,找到 hlsl 着色器都比找到 glsl 着色器(OpenGL 是一种通用的东西......)更难,然后可以移植到 hlsl。

我应该用什么来制作它们?

这真的是你的选择,无论是记事本、VSCode、记事本++或任何类似的。我个人建议使用 Visual Studio 自带的 hlsl 编辑器(注意:你必须安装一个包才能获得图形和着色器工具)。然后,它只是反复试验,直到你编译它,或者直到它工作。

我可以在其他语言中使用这些效果吗?

效果主要仅用于 MonoGame/XNA,但是,任何可以访问 DirectX 包装器/本机实现 (IE C++) 的语言都可以使用相同的 hlsl 代码。然后 DirectX api 可以以类似的方式编译它。

另一个建议是,如果您不只是希望在 MonoGame 中使用 Pixel 着色器阶段和顶点着色器阶段,那么您就不走运了。您将不得不实施它,或者只是等到支持的版本

编辑:我也忘了给你最重要的链接!该MonoGame社区