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

问题描述 投票:0回答:1

我有一个项目,它使用大约2打。vsh。fsh文件使用OpenGLES绘制2D切片。由于不建议使用,因此我想将项目转换为Metal。现在,我的脑袋里浮现着两个系统都涉及的词汇和技术-图形不是我的专长。

我可以使用OpenGLES编译.vsh / .fsh文件,然后将其保存为金属兼容格式吗?目标是然后在以金属为中心的世界中使用保存的信息,并从项目中删除所有OpenGLES代码。我已经花了几天时间,但是我对这些过程还不够了解,无法完全尝试过渡到Metal。任何/所有帮助表示赞赏。

我看到了:“在支持它的设备上,您提供给SKShader的GLSL代码会自动转换为Metal着色语言并在Metal渲染器上运行”,这使我相信有一种方法可以完成此任务。我只是不知道从哪里开始。 OpenGL ES deprecated in iOS 12 and SKShader

我已经看到了:Convert OpenGL shader to Metal (Swift) to be used in CIFilter,如果它回答了我的问题,我不知道如何。

我也不认为这可以回答:OpenGL ES and OpenGL compatible shaders

答案/技术可以使用Objective-C或Swift-现有代码是Objective-C,项目的其余部分已转换为Swift 5。

objective-c swift opengl-es metal
1个回答
2
投票

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

1)您可以使用MoltenGL将您的[[GLSL着色器无缝转换为MSL

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


我想指出的是,根据我的经验,尝试使用[[performance
自己重写着色器会更好。
© www.soinside.com 2019 - 2024. All rights reserved.