如何将 OpenGLES 着色器转换为与 Metal 兼容的着色器?

How do I convert OpenGLES shaders to Metal compatible ones?

我有一个项目使用大约 2 打 .vsh.fsh 文件来使用 OpenGLES 绘制二维图块。由于已弃用,我想将我的项目转换为 Metal。我的脑子里现在充满了两个系统中涉及的词汇和技术——图形不是我的强项。

我可以使用 OpenGLES 编译 .vsh/.fsh 文件,然后将它们保存为金属兼容格式吗?目标是在以金属为中心的世界中使用保存的信息,并从项目中删除所有 OpenGLES 代码。我已经在这上面花了几天时间,但我对流程的了解还不足以完全尝试过渡到 Metal。 Any/all 感谢帮助。

我看到了这个:"On devices that support it, the GLSL code you provide to SKShader is automatically converted to Metal shading language and run on a Metal renderer",这让我相信有办法完成这件事。我只是不知道从哪里开始。 OpenGL ES deprecated in iOS 12 and SKShader

我看过这个: ,如果它回答了我的问题,我不明白如何。

我认为这也没有回答:OpenGL ES and OpenGL compatible shaders

Answers/techniques 可以使用 Objective-C 或 Swift - 现有代码为 Objective-C,项目的其余部分已转换为 Swift 5 .

有很多方法可以做你想做的事:

1) 您可以使用 MoltenGLGLSL 着色器无缝转换为 MSL.

2) 您可以使用开源着色器交叉编译器,例如:krafix, pmfx-shader,等等


我想指出,根据我的经验,您尝试自己重写着色器在性能方面会更好。