如果您在 Mac 上使用 XQuartz 作为 X 服务器,我认为您不走运,至少对于从远程计算机运行应用程序而言。看来(通过使用glxinfo
)对于基于 GLX 的间接渲染,支持的 OpenGL 如您所说:1.4。如果您正在执行基于 GLX 的直接渲染,那么 XQuartz 似乎公开了 2.1 版。
通过 X 服务器公开的 OpenGL 版本在 X 服务器的 GLX 实现中是硬编码的,所以你真的不能只配置一个新版本。它在您的 Ubuntu 系统上运行的可能原因是您获得了直接渲染支持,而您无法通过 ssh 访问其他机器。虚拟盒子一有点令人困惑,但似乎它们有 X 服务器(在虚拟盒子中)链接到本机 X 服务器,允许直接渲染,因此能够运行。您可以通过运行glxinfo
命令并检查它为直接渲染报告的内容来检查设置:
% glxinfo | grep direct
directing rendering: Yes
这表明 X 客户端直接与 OpenGL 对话。将其与以下内容进行比较:
% glxinfo | grep direct
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)
这意味着所有 OpenGL 命令都发送到远程 X 服务器,该服务器代表应用程序与本地 OpenGL 实现通信,但不等同于直接渲染。
如果您可以将应用程序移植到可以通过 X 服务器直接渲染的 Mac(可能使用MacPorts或类似工具),您将获得 OpenGL 2.1,并且该应用程序应该可以工作。