苹果不支持OpenGL是什么意思?

3

我发现苹果从MacOS Mojave开始弃用了OpenGL。

然而,基于我的图形API理解,我知道特定操作系统的图形驱动程序(支持特定图形API)是由图形卡供应商提供的,以可执行文件的形式提供,而不是预先内置于操作系统中。

苹果作为操作系统制造商,不支持OpenGL库是什么意思?

像AMD这样的图形卡供应商就不能为MacOS制作支持更高版本OpenGL的图形驱动程序吗?


1
我发现一篇文章,它说“苹果公司自己制作驱动程序,并将其包含在操作系统更新中”。这是新版图形库不支持的原因吗? - kusw
1个回答

5
图形卡制造商(如AMD)是否能够为MacOS制作支持更高版本OpenGL的图形驱动程序?
不行。 "驱动程序"是由操作系统用于与某些硬件通信的代码。 操作系统定义了与某些类型的驱动程序交互的方式,并且那些类型的硬件制造商提供了实现操作系统定义的驱动程序API的实现。
在涉及到与硬件进行交互时,用户空间代码可以与驱动程序交互,但只能按照操作系统允许的程度进行交互。
当您在MacOS上与OpenGL交流时,首先,您正在与MacOS交流。 您的OpenGL函数调用进入操作系统。 然后,操作系统将该GL函数调用转换为由图形驱动程序制造商实现的内部API,然后操作系统进行调用。 任何结果都会从这些内部驱动程序API进行转换,然后转发回您。
您永远不会直接与图形驱动程序交谈; MacOS始终作为中介人坐在您之间。 MacOS上的图形驱动程序不包含OpenGL实现; MacOS本身具有实现,但其某个部分由图形驱动程序提供。
这就是为什么在MacOS上,实现支持的扩展列表缺少很多供应商特定的扩展名。 如果查看Windows或Linux的OpenGL实现,AMD和NVIDIA支持大量扩展名。 这些在MacOS上不存在,因为MacOS控制可用的扩展名。
它不必这样做; 它可以允许驱动程序公开任何它想要的内容,在其他平台上也是如此。 但是这些都是由那些平台作出的特定选择; 它们不必以这种方式进行,而苹果公司没有这样做。
因此,如果MacOS不再包含OpenGL实现......那么它就不再具有OpenGL实现。 您无法与该内部驱动程序API交流,因为它属于操作系统,并且不允许您访问它。
并且图形卡制造商无法插入后门或其他东西,以允许您访问驱动程序,因为操作系统始终处于控制状态。 操作系统拥有硬件接口。 如果供应商尝试创建一些钩子来绕过操作系统,我相信苹果公司会对这些驱动程序发表非常不愉快的言论。

谢谢您的友善回答!它真的很有帮助。我只是想知道“OpenGL是否完全集成到操作系统中(就像Windows的Win32API一样),因此操作系统成为与驱动程序通信的主要和唯一接口”。我可以这样理解吗?再次感谢您。 - kusw
1
你可以创建一个dylib将一个API转换为另一个API。因此,moltenVK之类的工具可以接收Vulkan调用,但输出Metal函数调用。虽然不完美且会损失一些性能,但似乎效果还不错。 - David Sullivan

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