【问题标题】:How to use or make "Effects" in monogame?如何在单人游戏中使用或制作“效果”?
【发布时间】:2018-03-04 10:30:55
【问题描述】:

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

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

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

【问题讨论】:

标签: c# xna shader monogame effects


【解决方案1】:

哇,多么宽泛的问题……您应该从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(glsl 用于 OpenGL,hlsl 用于 DirectX,metal 用于,well Metal 等)。请注意,您只能使用 MonoGame 而不是 glsl 来定位 hlsl。这是因为当 MonoGame 尝试在 OpenGL 上下文中使用代码时,着色器的 bytecode 被直接翻译成 glsl bytecode。查看 this 页面了解 hlsl 的各个阶段。

我可以在哪里下载效果?

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

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

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

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

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

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

release

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

【讨论】:

  • 很抱歉回复晚了,但这太棒了!谢谢你这么详细的回答!这帮助很大!
猜你喜欢
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2019-08-05
相关资源
最近更新 更多