ios - 如何指定金属着色器语言版本?
问题描述
我的应用程序Binary Rejected
第三次获得。崩溃日志没有帮助(我已经对它们进行了符号化,但它们不包含任何打印日志......)。
在 上运行良好iPhone 6s
,iPhone X
并且iPad Pro 12.9
我正在iOS 12
使用应用程序目标进行测试iOS 11
由于Metal for iOS不能在模拟器中运行,我没有测试过iOS 11
所以我得到了 Crashlytics 并获得了一些关于crash_info_entry_0
密钥的信息:
...错误域=AGXMetalA8X 代码=3“功能 ... 正在使用与此操作系统不兼容的语言版本 2.1。”...
它发生在iPad Air 2 (A8)
跑步中iOS 11.4.1
所以我想问题是iOS 11
不支持金属language version 2.1
如何将语言版本更改为2.0
?
更新1:
在检查了我的 Metal Lib 之后,它确实有一个目标iOS 12
。它在应用程序目标上运行良好iOS 11
。我现在已经将 Metal Lib 目标更改为iOS 11
,我希望也可以更改 Metal Language 版本...
我希望编译器或 App Store Uploader 能抓住这一点。
更新 2:
有效!更改 Metal Lib 的 iOS 版本目标也会更改 Metal Shader Language 版本。
解决方案
在包含 Metal 代码的目标中,有一个名为“Metal 语言修订版”的构建设置(实际键是MTL_LANGUAGE_REVISION
,有效值包括Metal12
和Metal20
,分别对应于语言版本 1.2 和 2.0),允许您指定首选 MSL 版本。未设置时,此设置会选择适合当前 SDK 和部署目标的默认值,这在您的情况下似乎过于激进。如果您不使用 MSL 2.1 功能,则可以在目标设置的 Build Settings 部分中将其显式设置为“Metal 2.0”。
推荐阅读
- javascript - 如何避免使用递归函数
- script - 如何使用 uBlock Origin 阻止具有更改数字的 URL?
- azure - 使用遥测客户端的 Get-Metric 方法出现错误“尝试通过指定 2 个维度来获取指标系列,但此指标有 3 个维度”
- php - 如何在php中打印特定的json键?
- swift - 在tableview单元格中更改like按钮的颜色
- teradata - 在 teradata 中,您可以将 cte 插入表中吗?
- android - 如何在 android gradle.kts 中定义自定义源集?
- fpga - 如何使用 MyHDL 模块在 PYNQ Z1 上实现以下数学方程?
- django - 如何为我的 django datetimefield 设置默认小时
- php - 三个文件中的多帖子请求 Wordfpress