我发现Apple从MacOS Mojave开始不赞成使用OpenGL。
但是,根据我对图形API的理解,我知道特定操作系统的图形驱动程序(支持特定图形API)是由图形卡供应商提供的(以可执行文件的形式),而不是在操作系统中预先构建的。
操作系统制造商苹果公司不支持OpenGL库是什么意思?
像AMD这样的图形卡供应商不能仅仅为MacOS制作其图形驱动程序来支持更高版本的OpenGL吗?
答案 0 :(得分:3)
像AMD这样的图形卡供应商不能只为MacOS制作其图形驱动程序以支持更高版本的OpenGL吗?
否。
“驱动程序”是操作系统用来与某些硬件进行通信的一段代码。操作系统定义了一种与某些类型的驱动程序进行交互的方式,并且用于这些类型的事物的硬件制造商提供了操作系统定义的驱动程序API的实现。
在与硬件进行交互时,用户域代码可以与驱动程序进行精确交互,并且仅在操作系统允许的范围内与它们进行交互。
在MacOS上与OpenGL对话时,首先要与 MacOS 对话。您的OpenGL函数调用进入操作系统。然后,操作系统将该GL函数调用转换为图形驱动程序制造商实现的内部API,然后操作系统对其进行调用。任何结果都将从这些内部驱动程序API转换而来,并转发回给您。
您从不直接与图形驱动程序对话; MacOS始终是你们之间的中介。 MacOS上的图形驱动程序不包含OpenGL实现。 MacOS 本身有一个实现,但是部分由图形驱动程序提供。
这就是为什么在MacOS上,实现支持的扩展列表中缺少许多特定于供应商的扩展。如果您查看Windows或Linux OpenGL实现,则AMD和NVIDIA会支持它们大量的扩展。这些在MacOS上不存在,因为MacOS 控制可用的扩展名。
它不必这样做;它可以使驱动程序公开所需的内容,而这是在其他平台上完成的。但是,这些是这些平台做出的特定选择。他们不必这样做,而Apple没有。
这样,如果MacOS不再包含OpenGL实现...则它不再具有OpenGL实现。而且您不能使用该内部驱动程序API,因为它属于操作系统,并且不允许您访问它。
图形卡制造商无法粘贴后门或其他东西来允许您访问驱动程序,因为操作系统始终处于 控制之下。操作系统拥有与硬件的接口。而且,如果供应商试图创建某种以某种方式绕过操作系统的挂钩,那么我可以肯定,苹果公司对于这些驱动程序会有非常不愉快的说法。