代码之家  ›  专栏  ›  技术社区  ›  Ruslan

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

  •  2
  • Ruslan  · 技术社区  · 7 年前

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

    我知道它们存放在。fx文件,它们是用某种语言编写的。

    你能告诉我一些方向吗。在哪里可以下载效果?我应该用什么来制作它们?我可以在其他语言中使用这些效果吗?我应该通过谷歌搜索了解更多信息吗?

    1 回复  |  直到 7 年前
        1
  •  5
  •   Optimistic Peach    6 年前

    哇,多宽泛的问题啊。。。你应该从 googling
    然后,阅读一些教程,我推荐 RB Whitaker .
    然后,使用C#或C++或C或Java(HLSL类似于这些)的一些知识,查看如何为MonoGame编写效果。尝试查找示例。此外,如果您在某些方面遇到困难,那么查看MonoGame和BasicEffect源代码也不是一个坏主意。而且,大多数XNA的东西仍然适用于MonoGame,所以研究XNA 随着 MonoGame是个好主意。

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

    var effect = Content.Load<Effect>("EffectNameHere");
    

    现在具体回答您的问题:

    到目前为止,我唯一不能理解的是影响是什么。

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

    在哪里可以下载效果?

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

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

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

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

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

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

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