C# 如何使用或制作;“影响”;在单一游戏中?

C# 如何使用或制作;“影响”;在单一游戏中?,c#,xna,shader,monogame,effects,C#,Xna,Shader,Monogame,Effects,我一直在学习如何使用monogame。 到目前为止,我唯一不能理解的是什么是效应。我只是找不到任何关于如何制作或使用它们的完整教程 我知道它们存储在.fx文件中,并且是用某种语言编写的 你能给我指路吗。在哪里可以下载特效?我应该用什么来制作它们?我可以在其他语言中使用这些效果吗?我应该通过谷歌了解更多信息吗?哇,这是一个多么宽泛的问题。。。你应该从它开始。 然后,阅读一些教程,我推荐您的。 然后,使用C语言或C++或C或java的知识(HLSL与这些类似),查找如何编写单效函数。试着查一些例子。

我一直在学习如何使用monogame。 到目前为止,我唯一不能理解的是什么是效应。我只是找不到任何关于如何制作或使用它们的完整教程

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


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

哇,这是一个多么宽泛的问题。。。你应该从它开始。
然后,阅读一些教程,我推荐您的。
然后,使用C语言或C++或C或java的知识(HLSL与这些类似),查找如何编写单效函数。试着查一些例子。此外,如果你在某些事情上陷入困境,那么看看MonoGame和BasicFect源代码也不是一个坏主意。而且,大多数XNA的东西仍然适用于MonoGame,所以在MonoGame中研究XNA是一个好主意

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

var effect = Content.Load<Effect>("EffectNameHere");
var effect=Content.Load(“EffectNameHere”);
现在具体回答您的问题:

到目前为止,我唯一不能理解的是什么是效应

效果基本上只是着色器的MonoGame/XNA包装。着色器基本上是一个在GPU上运行的小程序。着色器可以具有不同的阶段,具体取决于您使用着色语言针对的api(glsl用于OpenGL、hlsl用于DirectX、metal for、well metal等)。请注意,您只能将hlsl作为单游戏的目标,而不能将glsl作为目标。这是因为当MonoGame尝试在OpenGL上下文中使用代码时,着色器的字节码直接转换为glsl字节码。请参阅第页了解hlsl的各个阶段

在哪里可以下载特效

你通常不会,自己写吧。无论哪种方式,查找hlsl着色器都比查找glsl着色器(OpenGL是一种通用的东西…)更困难,然后可以将glsl着色器移植到hlsl

我应该用什么来制作它们

无论是记事本、VSCode、记事本++还是类似的东西,它都是您的选择。我个人建议使用VisualStudio附带的hlsl编辑器(注意:您必须安装一个软件包才能获得图形和着色器工具)。然后,它只是反复试验,直到你让它编译,或者直到它工作

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

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

另一个建议是,如果您希望在MonoGame中使用不仅仅是像素着色器阶段和顶点着色器阶段,那么您就不走运了。您必须实现它,或者只需等待一个支持

编辑:
我也忘了给你最重要的链接!只要用谷歌搜索一下就可以了。。。Render Monkey是一个用于创建/编辑fx文件的可靠程序。很抱歉,响应太晚了,但这太棒了!谢谢你这么详细的回答!这帮了大忙!