San*_*ion 5 opengl-es fragment-shader ios sprite-kit metalkit
我对 SpriteKit 中着色器的概念和使用非常陌生。
我发现本教程介绍了如何使用附加到 Color Sprite 的自定义着色器属性的自定义着色器文件 - Fractal.fsh 渲染 Mandelbrot 分形。
https://www.weheartswift.com/fractals-Xcode-6/
它工作得很好,我认为学习 OpenGL ES 和 SpriteKit 中的自定义着色器将是一个有趣的练习。
不过,根据 Apple 的说法,OpenGL ES 自 iOS 12 起已被弃用。
我的问题是这样的:
这是否意味着 SpriteKit 中使用的自定义着色器现在应该用 Metal 编写?
我试图弄清楚如何在 Metal 中重写第一个链接中提到的 fractal.fsh 着色器代码,但我还没有找到任何有关如何将现有自定义 SKShader 从 OpenGL ES 转换为 Metal 的资源。然而,我并不是在寻找有人重写该代码以使用 Metal,而只是寻找一个指向正确方向的指针。
更新: 根据@Knight0fDragon 的回答,我将尝试澄清我的问题:
SKShader 类的文档指出:
“SKShader 对象包含自定义 OpenGL ES 片段着色器。”
https://developer.apple.com/documentation/spritekit/skshader
那么,如果 SKShader 对象拥有自定义的 OpenGL ES 片段着色器,那么在对 OpenGL ES 的支持被弃用后,它将拥有什么?
如果从 iOS 12 开始无法使用 OpenGL ES,那么如何继续创建一个在 SpriteKit 中使用的自定义片段着色器呢?首先,我认为包含 GLSL 代码的 *.fsh 文件可以替换为包含等效金属代码的 *.metal 文件,但这种评估显然太天真了(因为我尝试过,但无法将 *.metal 文件分配给Color Sprite 的 Custom Shader 属性)
根据苹果公司的说法(请参阅此链接页面底部附近)...
使用 OpenGL ES 构建的应用程序将继续在 iOS 12 中运行,但 OpenGL ES 在 iOS 12 中已弃用。以前使用 OpenGL ES 的游戏和图形密集型应用程序现在应该采用 Metal [强调]。
如果您是从头开始,我建议您使用 Metal 编写着色器。
| 归档时间: |
|
| 查看次数: |
1350 次 |
| 最近记录: |