gpt4 book ai didi

ios - OpenGL ES 在 iOS 12 和 SKShader 中被弃用

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:28:29 25 4
gpt4 key购买 nike

我对 SpriteKit 中着色器的概念和使用非常陌生。

我找到了这个关于如何使用自定义着色器文件渲染 Mandelbrot 分形的教程 - Fractal.fsh - 附加到 Color Sprite 的自定义着色器属性。

https://www.weheartswift.com/fractals-Xcode-6/

它运行良好,我认为在 SpriteKit 中学习 OpenGL ES 和自定义着色器将是一个有趣的练习。

不过,根据 Apple 的说法,从 iOS 12 开始,OpenGL ES 已被弃用。

https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/BestPracticesforShaders/BestPracticesforShaders.html

我的问题是:

这是否意味着 SpriteKit 中使用的自定义着色器现在应该用 Metal 编写?

我试图弄清楚如何在 Metal 中重写第一个链接中提到的 fractal.fsh 着色器代码,但我还没有找到任何关于如何从 OpenGL 转换现有自定义 SKShader 的资源ES 到金属。但是,我并不是在找人重写代码以使用 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 属性)

最佳答案

来自 "Executing Shaders in Metal and OpenGL" 上的文档:

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.

因此,根据我的理解,SpriteKit 将使用 Metal 作为可用的后端,并在编译它们时为您转换着色器。我没有找到直接在 Metal 中编写着色器的选项。

关于ios - OpenGL ES 在 iOS 12 和 SKShader 中被弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53828497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com