问题

如何看待WWDC2018上,苹果宣布在新系统上弃用OpenGL、ES、CL?

回答
好的,我们来详细探讨一下 2018 年 WWDC 上苹果宣布在新系统上弃用 OpenGL、ES、CL 的事件,以及其深远的影响和意义。

事件本身:弃用与新生的宣告

在 2018 年的 WWDC(全球开发者大会)上,苹果公司正式宣布将在其未来的操作系统版本中逐步弃用 OpenGL、OpenGL ES 和 OpenCL。这个消息对于许多开发者,尤其是那些在游戏开发、图形处理、科学计算等领域工作的开发者来说,无疑是一个重大的转变。

OpenGL (Open Graphics Library): 是一个跨平台的、开源的图形应用程序接口(API),用于渲染二维和三维矢量图形。
OpenGL ES (OpenGL for Embedded Systems): 是 OpenGL 的一个子集,专为嵌入式系统(如移动设备)设计,以其低功耗和高性能而闻名。
OpenCL (Open Computing Language): 是一个开放的、免版税的、跨平台的并行编程框架,用于编写在异构计算平台上(包括 CPU、GPU、DSP 等)运行的程序。

苹果的这一举措并非是无缘无故的,而是为了推广和巩固其自家的图形和计算 API:

Metal: 这是苹果在 2014 年推出的低级图形和计算 API,旨在提供更接近硬件的控制,从而实现更高的性能和效率。Metal 被设计为直接与 GPU 交互,绕过了 OpenGL 的中间层,减少了 CPU 开销,并能更好地利用 GPU 的并行处理能力。
Metal Performance Shaders (MPS): 是 Metal 的一个高级框架,提供了一系列优化的图形处理和计算原语,旨在简化开发并提高性能,特别是在机器学习和图像处理方面。

苹果弃用 OpenGL/ES/CL 的原因与动机

苹果做出这一决定的背后,有其深层的原因和战略考量:

1. 性能和效率的极致追求:
低级别控制: OpenGL/ES 是一个相对高层级的 API,它抽象了许多底层硬件细节。这意味着在调用 OpenGL/ES 时,会存在一定的“驱动开销”,即 CPU 需要与驱动程序进行多次交互才能将命令传递给 GPU。而 Metal 提供的是一个低级别 API,允许开发者直接控制 GPU 资源,例如:
更细粒度的资源管理: 开发者可以更精确地管理 GPU 内存、纹理、缓冲区等,减少不必要的内存拷贝和同步开销。
更直接的 GPU 指令发送: Metal 允许开发者直接构建 GPU 命令缓冲区,减少 CPU 到 GPU 的通信延迟。
跨平台 API 的固有局限性: OpenGL/ES 作为一个跨平台 API,为了兼容性,往往需要妥协,无法充分发挥特定硬件的潜力。而 Metal 是苹果 为自家平台(macOS, iOS, iPadOS, tvOS, watchOS)量身定制 的,能够深入挖掘 Apple Silicon 芯片的独特架构和特性,例如统一内存架构(Unified Memory Architecture, UMA)。
更低的 CPU 开销: 许多图形操作,尤其是在复杂的场景中,会占用大量的 CPU 资源用于驱动程序和API 调用。Metal 通过减少这些开销,将更多的 CPU 资源释放出来用于游戏逻辑、AI计算或其他任务。

2. 统一的开发者体验和生态系统构建:
全平台覆盖: 苹果希望在所有平台上都能提供一致的、高性能的图形和计算体验。通过推广 Metal,苹果能够统一其软件生态系统中图形和计算相关的开发标准,简化开发流程,降低维护成本。开发者只需学习和掌握 Metal,就能在所有苹果设备上获得最佳性能。
推动创新: 弃用 OpenGL/ES/CL 相当于为开发者设定了一个新的技术方向,鼓励他们拥抱更现代、更强大的 API。这有助于推动整个苹果平台在图形和计算领域的创新,例如:
更逼真的图形效果: Metal 提供了更多的 GPU 功能访问权,使得开发者能够实现更复杂的着色器、光照模型和后处理效果,从而创造出更具沉浸感的视觉体验。
先进的计算应用: OpenCL 主要用于通用计算(GPGPU)。而 Metal 的计算功能(Compute Shaders)和 Metal Performance Shaders (MPS) 则为机器学习、图像处理、信号处理等提供了更高效的平台,这与苹果在 AI 和机器学习领域的战略非常契合。

3. 对未来技术趋势的预判和适应:
GPU 计算的崛起: GPU 不再仅仅是图形渲染的工具,而是强大的并行计算平台。OpenCL 就是为了挖掘 GPU 的计算潜力而生。然而,随着 GPU 架构的发展和软件栈的演进,苹果认为 Metal 是一个更优越的选择,能够更好地适应 GPU 计算的未来发展方向。
游戏开发的革新: 现代游戏对性能的要求越来越高。许多大型游戏引擎(如 Unreal Engine, Unity)都积极拥抱 Metal,以在 macOS 和 iOS 平台上提供更好的游戏体验。淘汰 OpenGL/ES 是为了引导开发者迁移到 Metal,以应对日益增长的性能需求。

影响和挑战

苹果的这一决定带来了多方面的影响,也伴随着一定的挑战:

正面影响:

性能提升: 对于那些积极迁移到 Metal 的应用和游戏,用户普遍体验到了显著的性能提升,图形更流畅,加载更快,功耗更低。
创新驱动: 许多开发者利用 Metal 的强大功能,创造出了更具创新性和视觉吸引力的应用,特别是在 3D 建模、AR/VR、专业图像处理和机器学习领域。
统一平台优势: 对于苹果生态内的开发者而言,学习和使用 Metal 意味着可以在所有苹果设备上获得最佳的开发效率和用户体验。
开发者工具和生态支持: 苹果在 WWDC 上也加强了对 Metal 的支持,提供了 Xcode 中的 Metal 调试工具、性能分析工具,以及相应的文档和教程,帮助开发者进行迁移。

挑战和负面影响:

开发者的迁移成本:
代码重写: OpenGL/ES 和 Metal 是完全不同的 API,从一个迁移到另一个往往意味着需要进行大量的代码重写,尤其是在图形管线、着色器语言(GLSL 转 MSL)以及资源管理等方面。这对于拥有庞大 OpenGL/ES 代码库的开发者来说,是一个巨大的投入。
学习新知识: 开发者需要花时间学习 Metal 的新的概念、编程模型和工具。虽然 Metal 的设计初衷是“更接近硬件”,但其抽象方式与 OpenGL/ES 截然不同。
平台限制: 这一决策意味着 OpenGL/ES 在苹果平台上的“寿终正寝”,开发者如果希望在苹果设备上获得最佳体验,就必须放弃对 OpenGL/ES 的依赖。这对于那些跨平台开发,并希望在多个操作系统上共享尽可能多代码的项目来说,是一个不小的障碍。
对现有应用的兼容性: 已经发布的、但尚未迁移到 Metal 的应用,可能会在未来版本的 macOS 和 iOS 上遇到兼容性问题,甚至无法运行。苹果通常会提供一段时间的过渡期,但最终会停止支持旧的 API。
开源社区的碎片化: OpenGL 和 OpenCL 是开放标准,在跨平台开发和开源社区中有着广泛的应用。苹果的这一举动可能在一定程度上加剧了图形和计算 API 的碎片化,使得开发者在选择技术栈时需要更仔细地考虑目标平台。

时间线和过渡

苹果并没有一夜之间就强制弃用 OpenGL/ES/CL。这通常是一个循序渐进的过程:

弃用声明 (Deprecation): 苹果会在 WWDC 上宣布某个 API 被“弃用”,这意味着该 API 仍然可以在当前和未来一段时间的系统中工作,但苹果不鼓励新的开发使用它,并且未来可能会停止支持。同时,苹果会推荐使用新的替代方案(如 Metal)。
移除 (Removal): 在弃用一段时间后,苹果可能会在某个版本的操作系统中彻底移除对旧 API 的支持。

在 2018 年宣布弃用后,苹果在后续的 macOS 和 iOS 版本中逐步减少对 OpenGL/ES 的支持,并开始强制开发者使用 Metal 来实现某些功能,例如在 App Store 审核中可能会对新提交的应用有更严格的 Metal 使用要求。

总结

苹果在 WWDC2018 上宣布弃用 OpenGL、ES、CL,是其 拥抱自身技术、追求极致性能、统一平台体验和前瞻性技术布局 的重要一步。

从战略上看, 这是苹果巩固其在图形和计算领域控制力,推广自家先进技术(Metal)的必然选择。通过强制开发者迁移到 Metal,苹果能够更好地发挥其硬件优势,并推动其生态系统的技术创新。
从技术上看, Metal 提供了更低的级别控制、更高的性能和更低的开销,能够更充分地利用 Apple Silicon 芯片的强大能力,为复杂的图形渲染和并行计算提供了更好的平台。
从开发者角度看, 这既是机遇也是挑战。机遇在于能够开发出更出色、更高效的应用;挑战则在于需要付出巨大的努力来适应新的技术和进行代码迁移。

总而言之,苹果的这一举措标志着其在图形和计算领域的一次重大转型,旨在引领行业进入一个更高效、更强大的新时代,尽管这一转型伴随着一定的阵痛和成本。

网友意见

user avatar

OpenGL 已停止更新,未来由 Vulkan 接替。

OpenCL 的未来也已经由 Khronos 作出决定,合并入 Vulkan。

macOS 官方支持的 OpenGL 最新版本只到4.1,在此之前很长一段时间停留在3.x。抛弃 OpenGL 早在预料之中。苹果的想法是依靠庞大的 iOS 设备和用户数反过来吸引 macOS 开发者(能不能成真另当别论)。另一个利好是抛弃 OpenGL 陈旧的历史负担,减少系统维护开发成本。OpenGL ES 同理。

OpenCL 有点意思,因为它的原始创始者是苹果自己。对比 CUDA,OpenCL 开放跨平台的优势付出的代价是没有 NVIDIA 这类鼎力支持的厂商,开发调试过程极其复杂,生态圈也被 CUDA 远远抛开。苹果很长一段时间内倒是大力支持,还为此在 Mac 产品线上全线配备 AMD 图形卡,抛弃 NVIDIA(这是一个原因,最主要的是选择 AMD 成本更低,获得的主导权更大)。到 OpenCL 2.2发布时,Khronos决定未来将其与 Vulkan 融合。未来更新的版本的、单独的 OpenCL 也将不复存在。而 Metal 相当于集成了 OpenGL 和 OpenCL 特性、兼具图形渲染和通用计算、面向底层低开销的新一代 API。新近发布的 Metal 2,更加强了其在机器学习和虚拟现实方面的效率和特性。

为什么不支持 Vulkan?自己一人说了算当然比一群人开会来的爽啊,问题是能不能做到像微软和 NVIDIA 那样自己爽大家也爽?难。

未来的标准,CUDA、DirectX、DirectCompute 没有主导权,Vulkan 不能自己说了算,Metal 当然被确立为自家官方未来的标准。

借由摒弃这三项标准这事,可以预测一下苹果未来工作站级别电脑会是什么情况——只能用于 macOS/iOS/tvOS 平台的 API,只支持此标准的操作系统,持观望和否定态度的广大开发者,大概率不支持此标准的 NVIDIA 等硬件厂商——没准下一代 Mac Pro 遭到的恶评比本代更多:圆柱体 Mac Pro 至少兼容性不是大问题。而随着 Metal 未来可能的普及,苹果自研的桌面级 GPU 有朝一日面世也不会太令人惊讶。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有