苹果在今年的 WWDC 开发者大会一下子给我们灌输了好几个新的名词。作为普通用户,我们从媒体的相继报道了解到了什么是 HomeKit,什么是 HealthKit,它们分别能为我们做些什么。可其中一个技术却鲜有报道,但是在 WWDC 发布会现场的演示却是给我们带来最深的印象。那就是苹果的新图形显示技术 Metal。

评论:30 查看:18544

何为Metal

撰文:Lydia
苹果在今年的 WWDC 开发者大会一下子给我们灌输了好几个新的名词。作为普通用户,我们从媒体的相继报道了解到了什么是 HomeKit,什么是 HealthKit,它们分别能为我们做些什么。可其中一个技术却鲜有报道,但是在 WWDC 发布会现场的演示却是给我们带来最深的印象。那就是苹果的新图形显示技术 Metal。

  简言之,Metal 是苹果对图形处理器的新编程方法。苹果声称无需对硬件做出改变就能让图形显示性能提升,并称游戏即使在 60 fps 的帧速率下的画面更加细腻。听起来像变了场魔术。实际上的效果怎样呢?

Metal能释放硬件

撰文:Lydia
总结地说,Metal 的确正如苹果所说的,它可以释放硬件的性能,即 A7 的“本质”。

  图形处理器本质上就是巨大的“状态机”。把它想象成一块巨大的古老的板,上面布满了开关和表盘,每个开关标注有特定的功能。并不是所有的功能都能一起使用,但你可以随时切换这些开关。你手动进行的切换和操作将决定了“系统的状态”。

  图形编程员的工作是打开正确的开关,然后用几何体填满处理器。这就是苹果在谈到 Metal 每帧能够处理的“描绘指令”(draw call)时所指的。

  使用 OpenGL,目前制作图像的标准是,编程员可以单独打开每个开关,单独调试好表盘。每次做出这些操作后,图形处理器就不得不检查一遍,这个巨大机器的状态是否可行。

  而使用 Metal 就不同了。编程员可以先定义好他们想要机器达到的状态,然后简单地应用这些状态即可。他们不再需要单独设置,而且要不偏不倚,正确设置。使用 Metal 的过程更像是从菜单选择你想要的食物。


Metal 让游戏开发者更容易地发挥设备硬件的性能

  从用户的角度来看,这些听起来跟他们无关紧要。但是最终效果将产生明显的改善。

Metal的魔力

撰文:Lydia
Metal 是根据如今 GPU 和 CPU 的工作原理而设计的,尤其是针对苹果的 A7。A7 将 GPU 和 CPU 整合到一块芯片,共享一个内存池。

  OpenGL 更多是基于这样的理念,即 GPU 为单独的显卡。但现实是, GPU 和 CPU 共享一个内存池,在这种情况下,Metal 能释放更多性能。管理绘图必需的资源变得越来越简单和快速。许多效果,譬如倒影,要求绘制情景到一张图像,然后再把这张图像导入最终情景。Metal 简化了很多。


在 WWDC 大会上,游戏开发者展示 Metal 技术带来的惊叹效果

  现代 GPU 和 CPU 都内置多个核心——它们会走,会说,会跑,会跳,并能同时进行这些事情——Metal 提供一种方法,通过允许图形命令的多处理,来释放所有这些能力。相比之下,OpenGL 总是单线程的,不能使硬件的性能尽可能地发挥极致。

  Metal 释放的不仅仅是图形显示的性能,它还支持一种叫做“通用图形单元计算”的模式——是指,使用 GPU 运行一些没必要跟图形有关的软件。OpenCL,Mac 用户应该很熟悉,是一个面向异构系统通用目的并行编程的开放式免费标准,是用来编写执行 GPU 的软件的一种开源标准。Metal 将这种通用用途的图形编程功能带到 iOS。顾名思义,OpenCL 与 OpenGL 非常相似,所以 Metal 的设计对 OpenCL 同样有益,正如 Metal 对 OpenGL 的益处一样。这里来看,处理器共享内存也有很大的好处。


Metal 的好处很多,不仅仅只对游戏和图形显示有好处

  多线程访问也是一样的。利用 Metal 的通用计算能力,我们将开始看到 A7 发挥出意想不到的性能。一些从 OS X 移植到 iOS 的应用程序将能更好地利用 iOS 的 GPU,使软件完成前所未有的任务。

  听起来很牛逼。但是对普通 iOS 设备用户来说意味着什么呢?在某些情况下,Metal 的进步就像建造大型强子对撞机——我们实际上不知道会有何种机遇,但这是个勇敢的新世界,充满了无限可能。

  说实际的,用户肯定能看到一些好处,比如载入速度变快了,情景画面更细腻了,大量的应用程序可能都可以使用 GPU 作为一个计算平台。

Metal是重大策略举措

撰文:Lydia


已有几家大型游戏开发商承诺支持Metal

  当然,不是因为有了 Metal 就不费吹灰之力地实现这些。开发者需要采用新系统编写他们的软件。但好消息是,许多大型的 iOS 游戏公司已经做出这方面的承诺。Unreal 和 Unity 这两大游戏引擎也都已经表示将支持 Metal。因此,即使开发者自己不想去思考如何执行 Metal,只要使用这两大游戏引擎,就能让自己的软件得到提升。游戏开发者也不需要花精力去重新编写。

  另外,研究 Metal 也隐藏着苹果的策略。苹果需要自己控制自己的产品体验。与其把自己的命运跟科纳斯组织绑在一起,苹果宁愿自己掌握,以便在需要的时候尽可能快地改进 Metal。(科纳斯组织是是一个由成员资助的,专注于制定开放标准(Open standard)的行业协会,重点制定免费的API,使在各种平台和设备上创作或播放的多媒体可以得到硬件加速。OpenGL 和 OpenCL 都在其工作组内。)

  这是一个重大的策略举措,因为这标志着苹果认为他们拥有大量的开发者群体,设备使用的数量也足够庞大,这些资本足以支持苹果走自己的路。同时也意味着,苹果开始更认真地对待 iOS 游戏体验。在手游市场能否击退传统家机市场的争辩中,iOS 游戏体验还无法成为强有力的证据。现在看来,苹果似乎要扭转这个趋势。

  当然,这也不是说 OpenGL 或 OpenCL 要退出舞台,不再发挥作用。还将有许多应用更适合使用它们来编程。只不过 Metal 更适合现代芯片,如 A7。或许等我们看到 Metal 的魔力,我们才算真正看到 A7 的魔力。

Metal:对开发者和用户来说意味着什么相关推荐

  1. Spring Cloud 2020.0.0 正式发布,对开发者来说意味着什么?

    作者 | YourBatman 在线教育领域资深架构师,Spring Framework 开源贡献者 冷冷 云集架构师.开源项目 pig 负责人.Spring Cloud Alibaba Commit ...

  2. 网络营销专员浅析网络营销优化对企业来说意味着什么?

    在现阶段下的网络营销环境下,越来越多企业注意到互联网市场的存在意义,许多企业都委托专业网络公司进行网站建设.网站优化与网站运营,通过网络技术的力量为企业将线上营销利润最大化.但是越想要越没有,急功近利 ...

  3. [大数据文章之其一] 大数据对你来说意味着什么?

    日常前言 五月六月,又陷入反反复复的项目 Bug 中了.讲道理,分析日志是越来越熟练了,代码水平其实没有很大提高,毕竟改 Bug 嘛,大多只是在原有代码的基础上,添加或者修改一些业务逻辑.虽然改原生代 ...

  4. Jonathan Bryce:OpenInfra峰会,一场开发者与用户的技术盛宴

    "我们希望这个峰会,是一个社区技术交流性质的峰会,而不是市场宣传的峰会.另外,我们希望峰会把整个社区的开发者和用户能聚集在一起,在我们峰会的平台上,进行技术和用户案例的交流."Jo ...

  5. iOS8 对开发人员来说意味着什么?

    今天凌晨.Apple WWDC2014 iOS8 正式推出. 或许,对于广大iOS用户来说,iOS8的创新并非特别多. 但对于开发人员来说,影响却将会是无比巨大的! 正如Apple官网上的广告:Hug ...

  6. 取消漫游费,移动通信服务资费对农村用户来说不公平

    三大电信运营商发布公告称,自2018年7月1日起,将取消流量"漫游"费,新老手机用户的省内通用流量升级为国内流量,看起来这对于国内手机用户来说是一件好事,不过这对于农村用户来说却未 ...

  7. 对于微机用户来说 为了防止计算机,计算机二级MSOffice考试巩固习题

    小伙伴们,趁着还没有考试,赶紧来练习下题目吧.下面是CN人才网为您精心整理的2017计算机二级MSOffice考试巩固习题的全部内容,希望可以帮到您.如果您喜欢的话可以分享给身边的小伙伴们! 计算机二 ...

  8. 安全对你来说意味着什么

    安全是我们这个行业的代言词,我们为安全而生.当你踏入这个网络安全领域的时候,你可能会思考一个问题:安全对与我和企业来说意味着什么? 个人经历 我接触安全领域是在高一的时候,刚开始喜欢一些 hack 题 ...

  9. ClickHouse CTO空降中国开发者和用户沙龙,B站、小红书、携程、阿里云携手分享ClickHouse实践

    ClickHouse由于其性能方面的突出优势,正在分析型数据库领域掀起一波新的技术浪潮.ClickHouse有哪些最新的特性?如何帮助企业实现降本提效?如何在海量数据场景下落地实践? 3月25日,CS ...

最新文章

  1. 面试官:你们Redis故障过吗,怎么解决?
  2. SAP MM 史上最偷懒的盘点事务代码MI10
  3. GAN不只会造假:捕获数据中额外显著特征,提高表征学习可解释性
  4. OpenCV 3.x Lib 源码结构简介
  5. HDU 4556 Stern-Brocot Tree
  6. Py之cx_Freeze:Python库之cx_Freeze库(程序打包)简介、安装、使用方法详细攻略—案例之实现机器人在线24小时智能翻译
  7. ActivityGroup中的子Activity创建Dialog:android.view.WindowManager$BadTokenException: U
  8. 200801一阶段1函数封装
  9. uva 12589——Learning Vector
  10. 领诵员冯琳最新消息!保研复旦、主持卫视跨年晚会
  11. Servlet相关(request域转发、重定向、刷新头)(session域)
  12. [bzoj1700]: [Usaco2007 Jan]Problem Solving 解题
  13. java成员访问属性,在Java中,针对类、成员方法和属性提供了四种访问级别,分别是private、static、prot...
  14. dataframe 输出标题_【学界】第八章:Python代码之数据输出、调参与算法总结
  15. Scikit-Learn 学得如何?程序员不容错过十大实用功能来袭
  16. 中国新材料产业应用前景与十四五运营方向分析报告2021年版
  17. 基于ArcGIS和fragstats软件计算景观破碎度(一)
  18. 如何系统学习计算机编程?自学还是培训?怎么选?
  19. 大M法的介绍以及建模过程中if else的实现
  20. 2018.06.25 一个不知道叫什么好的U盘启动工具集

热门文章

  1. c++读取txt文件中的数字_SpringBoot 多种读取配置文件中参数的方式
  2. blade php代码,Laravel 5框架学习之Blade 简介
  3. expect 赋值shell变量_Shell处理字符串常用技巧终结篇
  4. 使用openocd调试Linux内核,OpenOCD-JTAG调试
  5. 正则表达式(面试会考)
  6. apimac版 java_jdk1.8 mac官方下载-Java SE Development Kit 8 mac下载8u181 官方最新版__西西软件下载...
  7. 动态二维数组外圈元素值的和_C语言 | 用指向元素的指针变量输出二维数组元素的值...
  8. python 装机配置_Python实现自动装机功能案例分析
  9. 微软私有云解决方案_毕马威 AI 工厂携手微软云技术 | 共创人工智能发展,共建创新解决方案...
  10. 事务回退机制 android,【Android基础】——Fragment-使用方法