在iOS 13模拟器上从源代码编译Metal着色器时出现PCH错误

5

我正在使用Cocos2d-x v4 分支进行开发,该分支引入了 Metal 后端支持,并使用glsl-optimizer将 GLSL 转换为 MSL ,在运行时使用newLibraryWithSource:options:error:进行编译。

在 Xcode 11 beta 编译 iOS 13 设备时,这样做没有问题,但是当编译 iOS 13 模拟器时,着色器无法编译,出现以下错误:

Error: PCH file built from a different branch ((metalfe-902.9.49)) than the compiler ((metalfe-902.9.52))

有人有什么想法吗?

更多详情:在提问时,我使用的是macOS 10.15 beta 5上的Xcode 11 beta 5。现在我已更新到macOS 10.15 beta 6,但没有任何变化。我怀疑这个问题可能会在更新到Xcode 11 beta版本后得到解决。


你尝试过 Xcode 11 beta 6 吗? - Frank Rupprecht
@FrankSchlegel 正在解压缩中... - trojanfoe
@FrankSchlegel 是的,问题已经解决了。现在我有一个关于纹理非法像素格式的问题,但那是另一回事了。 - trojanfoe
我有类似的问题。在模拟器上创建纹理时,我必须删除空的“kCVPixelBufferIOSurfacePropertiesKey”选项。 - Frank Rupprecht
@FrankSchlegel 谢谢,我回来后会研究一下。不过无论如何,可能需要大量的macOS/Simulator与iOS条件代码,然而这个像素格式问题感觉又是另一个bug,不是吗? - trojanfoe
1
可能是。由空的IOSurface属性引起的错误消息也相当晦涩难懂。也许你可以在回来后发布一个新问题来解决你的问题。祝你度过愉快的假期! - Frank Rupprecht
1个回答

4

通过使用Xcode 11 beta 6解决了此问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接