Apple 不支持 OpenGL 是什么意思?

What does it mean that Apple doesn't support OpenGL?

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

但是根据我对图形API的了解,我知道特定OS(支持特定图形API)的图形驱动是由显卡供应商提供的(以可执行文件的形式),而不是预置 OS.

OS 制造商 Apple 不支持 OpenGL 库是什么意思?

像 AMD 这样的显卡供应商不能只为 MacOS 制作他们的显卡驱动程序来支持更高版本的 OpenGL 吗?

Can't graphic card vendors like AMD just make their graphic driver for MacOS to support the later version of OpenGL?

没有

“驱动程序”是操作系统用来与某些硬件通信的一段代码。 OS 定义了一种与某些类型的驱动程序交互的方法,并且这些类型的硬件制造商提供了由 OS.[=11= 定义的驱动程序 API 的实现。 ]

在与硬件交互时,用户空间代码可以与驱动程序完全交互,并且只能在操作系统允许的范围内。

当您在 MacOS 上与 OpenGL 对话时,您首先是在与 MacOS 对话。您的 OpenGL 函数调用进入操作系统。 OS 然后将该 GL 函数调用转换为由图形驱动程序制造商实现的内部 API,然后 OS 调用它。任何结果都从这些内部驱动程序 APIs 转换并转发给您。

从不直接与图形驱动程序对话; MacOS 始终充当你们之间的中介。 MacOS 上的图形驱动程序不包含 OpenGL 实现; MacOS 本身 有一个实现,但其中一部分由图形驱动程序提供。

这就是为什么在 MacOS 上,实现支持的扩展列表缺少很多 vendor-specific 扩展。如果您查看 Windows 或 Linux OpenGL 实现,AMD 和 NVIDIA 有大量它们支持的扩展。这些在 MacOS 上不存在,因为 MacOS 控制 哪些扩展可用。

它不必那样做;它本可以允许驱动程序公开它想要的任何内容,这是在其他平台上完成的。但这些是这些平台做出的具体选择;他们不必那样做,Apple 也没有。

因此,如果 MacOS 不再包含 OpenGL 实现...那么它就不再具有 OpenGL 实现。而且你不能与那个内部驱动程序 API 交谈,因为它属于 OS,它不允许你访问它。

并且显卡制造商无法插入后门或其他东西以允许您访问驱动程序,因为 OS 始终 处于控制之中。 OS 拥有硬件接口。如果供应商试图创建一些以某种方式绕过 OS 的挂钩,我敢肯定 Apple 会对这些驱动程序发表一些非常不愉快的话。