OpenGL 应用程序在我的 Mac 上失败,在 virtualbox 上运行

use*_*008 2 x11 opengl macos ssh kivy

我有一台配备 AMD Radeon 显卡并安装了 Mountain Lion 10.8.3 的 MacBook Pro。

我正在尝试使用 Mac 上的 ssh 访问驻留在 ubuntu 12.04.1 机器上的 OpenGL 应用程序(在 python 上使用 kivy 制作)。应用程序退出并提示运行该应用程序所需的最低 OpenGL 版本是 2.0(它检测到的版本是 1.4)。

不过,我可以在 ubuntu 机器本身上运行该应用程序,也可以在启用了 X11 的情况下使用 ssh 在我的 mac 上安装的虚拟机上运行该应用程序。

在使用 ssh 时,我的 mac 上是否缺少一些 X11 配置选项来将最低 OpenGL 版本更改为 2.0 而不是 1.4?

rad*_*al7 5

如果您使用 XQuartz 作为 Mac 上的 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  
Run Code Online (Sandbox Code Playgroud)

这表明 X 客户端正在直接与 OpenGL 对话。与以下内容进行比较:

% glxinfo | grep direct
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)
Run Code Online (Sandbox Code Playgroud)

这意味着所有 OpenGL 命令都会发送到远程 X 服务器,该服务器代表应用程序与本地 OpenGL 实现进行通信,但并不等同于直接渲染。

如果您可以将应用程序移植到 Mac(可能使用MacPorts或类似设备),您可以通过 X 服务器直接渲染,您将获得 OpenGL 2.1,并且该应用程序应该可以运行。