如何在单人游戏中使用或制作"Effects"?
How to use or make "Effects" in monogame?
我一直在研究如何使用 monogame。
到目前为止,我唯一不明白的是什么是效果。我只是找不到任何关于如何制作或使用它们的完整教程。
我知道它们存储在 .fx 文件中,并且是用某种语言编写的。
你能给我一些指示吗?在哪里可以下载效果?我应该用什么来制作它们?我可以在其他语言中使用这些效果吗?我应该 google 了解更多信息?
哇,好宽泛的问题...你应该从 googling 开始。
然后,阅读一些教程,我推荐RB Whitaker.
的那个
然后,之后,使用一些C#或C++或C或Java(HLSL与那些类似)的知识,查找如何为MonoGame编写效果。尝试查找示例。此外,如果您遇到困难,查看 MonoGame 和 BasicEffect 源代码也不是一个坏主意。此外,大多数 XNA 内容仍然适用于 MonoGame,因此研究 XNA 以及 MonoGame 是一个好主意。
至于如何在使用MonoGame的应用程序中使用它,在LoadContent函数中使用它:
var effect = Content.Load<Effect>("EffectNameHere");
现在具体回答你的问题:
So far the only thing I can't understand is what are effects.
效果基本上只是着色器的 MonoGame/XNA 包装器。着色器基本上是 GPU 上 运行 的一个小程序。着色器可以有不同的阶段,具体取决于 api 您使用着色语言(OpenGL 的 glsl,DirectX 的 hlsl,金属,以及金属等)的目标。请注意,您只能使用 MonoGame 而非 glsl 来定位 hlsl。这是因为当 MonoGame 尝试在 OpenGL 上下文中使用代码时,着色器的 bytecode 被直接转换为 glsl bytecode。查看 this 页面了解 hlsl 的各个阶段。
Where I can download effects?
你通常不会,自己写。无论哪种方式,找到 hlsl 着色器都比找到 glsl 着色器更难(OpenGL 是一种通用的东西......)然后可以移植到 hlsl.
What should I use to make them?
这真的是你的选择,记事本、VSCode、notepad++ 或任何类似的。我个人推荐使用Visual Studio自带的hlsl编辑器(注:图形和着色器工具需要安装包)。然后,它只是反复试验,直到你让它编译,或者直到它工作。
Can I use these effects in other languages?
Effects主要只针对MonoGame/XNA,但是,同样的hlsl代码可以被任何有访问权限的语言使用到 DirectX wrapper/native 实现(即 C++)。然后 DirectX api 可以用类似的方式编译它。
另一条建议,如果您不仅希望将像素着色器阶段和顶点着色器阶段与 MonoGame 一起使用,那么您就不走运了。您将不得不实施它,或者等到支持
的 release
编辑:
我也忘了给你最重要的link! MonoGame Community
我一直在研究如何使用 monogame。 到目前为止,我唯一不明白的是什么是效果。我只是找不到任何关于如何制作或使用它们的完整教程。
我知道它们存储在 .fx 文件中,并且是用某种语言编写的。
你能给我一些指示吗?在哪里可以下载效果?我应该用什么来制作它们?我可以在其他语言中使用这些效果吗?我应该 google 了解更多信息?
哇,好宽泛的问题...你应该从 googling 开始。
然后,阅读一些教程,我推荐RB Whitaker.
的那个
然后,之后,使用一些C#或C++或C或Java(HLSL与那些类似)的知识,查找如何为MonoGame编写效果。尝试查找示例。此外,如果您遇到困难,查看 MonoGame 和 BasicEffect 源代码也不是一个坏主意。此外,大多数 XNA 内容仍然适用于 MonoGame,因此研究 XNA 以及 MonoGame 是一个好主意。
至于如何在使用MonoGame的应用程序中使用它,在LoadContent函数中使用它:
var effect = Content.Load<Effect>("EffectNameHere");
现在具体回答你的问题:
So far the only thing I can't understand is what are effects.
效果基本上只是着色器的 MonoGame/XNA 包装器。着色器基本上是 GPU 上 运行 的一个小程序。着色器可以有不同的阶段,具体取决于 api 您使用着色语言(OpenGL 的 glsl,DirectX 的 hlsl,金属,以及金属等)的目标。请注意,您只能使用 MonoGame 而非 glsl 来定位 hlsl。这是因为当 MonoGame 尝试在 OpenGL 上下文中使用代码时,着色器的 bytecode 被直接转换为 glsl bytecode。查看 this 页面了解 hlsl 的各个阶段。
Where I can download effects?
你通常不会,自己写。无论哪种方式,找到 hlsl 着色器都比找到 glsl 着色器更难(OpenGL 是一种通用的东西......)然后可以移植到 hlsl.
What should I use to make them?
这真的是你的选择,记事本、VSCode、notepad++ 或任何类似的。我个人推荐使用Visual Studio自带的hlsl编辑器(注:图形和着色器工具需要安装包)。然后,它只是反复试验,直到你让它编译,或者直到它工作。
Can I use these effects in other languages?
Effects主要只针对MonoGame/XNA,但是,同样的hlsl代码可以被任何有访问权限的语言使用到 DirectX wrapper/native 实现(即 C++)。然后 DirectX api 可以用类似的方式编译它。
另一条建议,如果您不仅希望将像素着色器阶段和顶点着色器阶段与 MonoGame 一起使用,那么您就不走运了。您将不得不实施它,或者等到支持
的 release编辑: 我也忘了给你最重要的link! MonoGame Community