20

说 Mesa 是 OpenGL 的实现到底是什么意思?我的Nvidia卡的驱动程序没有实现所有的OpenGL功能等吗?因此,鉴于我的 Nvidia 卡的驱动程序正在接受 Opengl 调用并将它们交给硬件,Mesa 究竟做了什么?有人可以澄清 Mesa 和驱动程序之间的区别吗?

4

3 回答 3

25

有人可以澄清 Mesa 和驱动程序之间的区别吗?

Mesa 为基于 DRI2/DRM 架构的开源 GPU 驱动程序提供客户端 OpenGL 接口。或者换句话说:它也是驱动程序的一部分。

如果您安装了 NVidia 或 AMD 的专有驱动程序,则不需要 Mesa。如果您想使用开源驱动程序(nouveau、radeon、radeonhd、intel),您需要Mesa。

于 2012-09-12T09:05:52.417 回答
10

相信 LinuxQuestions.org 论坛成员 geeman2.0 对此事提供了很好的解释:

OpenGL 和 Mesa 并不是真正的两个单独的选择,而是 Mesa 是一种特定类型的 OpenGL。

OpenGL 只是一个接口,它定义了绘制 3d 图形所需的一组标准函数。它不涉及使这些函数发生的实际代码,它只指定函数被调用的内容以及它们应该做什么。

openGL 实现提供了运行 OpenGL 标准指定的方法的实际代码。如果没有安装实现,您将无法运行任何 opengl 程序。

Mesa 只是众多 OpenGL 实现中的一种,并且是 linux 发行版中包含的最标准的一种。它在软件中完成所有工作,这就是为什么它很慢。

当您为精美的显卡安装 Nvidia 或 ATI 驱动程序时,这些驱动程序会提供在显卡上运行的新 OpenGL 实现。这个实现将取代 Mesa 实现,但它仍然是一个 openGL 实现。也就是说,所有的 Mesa/ATI/NVidia 驱动程序都实现了相同的一组功能,它们只是以不同的方式实现,它们都是 openGL。

来源

于 2017-02-14T20:46:55.467 回答
0

说 Mesa 是 OpenGL 的实现到底是什么意思?

首先,OpenGL 是Khronos 和显卡制造商(Nvidia、ATI、Intel 等)之间创建的API 规范,它就像是对硬件能够执行什么功能的协议。

Mesa 是一个用于 3D 计算机图形的软件库,它提供了一个通用的 Khronos 兼容 OpenGL 实现,用于在多个平台上渲染 3D 图形。因此,例如,如果您正在运行 Linux,您可能必须安装 Mesa 才能生成任何类型的图形。对于 Microsoft Windows ,已经安装了一个实现

我的Nvidia卡的驱动程序没有实现所有的OpenGL功能等吗?

是的,您的 Nvidia 卡驱动程序实现了 OpenGL 功能。

因此,鉴于我的 Nvidia 卡的驱动程序正在接受 Opengl 调用并将它们交给硬件,Mesa 究竟做了什么?

您的程序与 Mesa 通信,Mesa 与您的显卡驱动程序通信,驱动程序与实际 GPU 通信,GPU 将信号发送到监视器,让您最终观看绘图。

于 2020-11-26T05:27:52.760 回答