iOS代码在运行时识别金属支持?

iOS代码在运行时识别金属支持?,第1张

概述通常,我使用以下代码识别设备的iOS版本. if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) 以类似的方式,我试图找到设备的金属支持.使用A7(或更好)GPU和iOS 8.0的Apple设备支持Metal. 这是我希望我的代码工作的方式: if (MetalSupported == true) { // metal 通常,我使用以下代码来识别设备的iOS版本.
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0)

以类似的方式,我试图找到设备的金属支持.使用A7(或更好)GPU和iOS 8.0的Apple设备支持Metal.

这是我希望我的代码工作的方式:

if (MetalSupported == true) {  // Metal programming} else {  // opengles2 programming}

如何获取布尔变量MetalSupported的值?

解决方法 你正在寻找特定于Metal的东西是好的 – 通常,iOS版本检查和硬件名称检查是脆弱的,因为它们依赖于你的应用程序知道所有可以运行它的 *** 作系统版本和设备.如果Apple要回去发布一个增加了Metal支持的iOS 7.x版本(好吧,似乎不太可能),或者支持Metal的设备,但不是你正在寻找的硬件名称之一(似乎更有可能) ),你将无法跟踪所有这些事情,并更新你的应用程序来管理它们.

无论如何,检查您运行的设备是否足够金属以获得令人敬畏的图形代码的最佳方法是什么?只是尝试获取MTLDevice对象:

ID<MTLDevice> device = MTLCreateSystemDefaultDevice();if (device) {    // ready to rock ?} else {    // back to OpenGL}

请注意,只测试Metal框架类的存在并没有帮助 – 这些类在任何运行iOS 8的设备上都存在(一直回到iPhone 4s和iPad 2),无论该设备是否具有Metal-有能力的GPU.

另请注意,iOS模拟器中没有Metal框架,因此如果您要进行模拟器测试(需要使用GPU API的应用程序部分),您需要在这个和任何其他Metal代码周围添加一些#ifs,因为即使对于GL,模拟器也是设备GPU性能的不良模仿者.

总结

以上是内存溢出为你收集整理的iOS代码在运行时识别金属支持?全部内容,希望文章能够帮你解决iOS代码在运行时识别金属支持?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1114457.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存