3

在 VMware 中安装 debian 并安装使用 freeglut 运行 OpenGL 应用程序所需的所有库之后,我曾经glxgears确保一切正常。

# glxgears
3426 frames in 5.0 seconds = 685.171 FPS
3562 frames in 5.0 seconds = 712.339 FPS
...
XI0:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
after 33172 requests (33170 known processed) with 0 events remaining.

glxgears似乎运行良好。即使在单击 glxgears 窗口框架上的“关闭”后出现上述错误,它也会在窗口中显示齿轮旋转。

但是当我尝试使用 freeglut3 执行一个简单的 OpenGL 程序时,我得到以下结果:

# ./program
X Error of failed request: BadRequest (invalid request code or no such operation)
Major opcode of failed request: 155 (GLX)
Minor opcode of failed request: 34 ()
Serial number of failed request: 36
Current serial number in output stream: 35

一个在非虚拟机上使用所有相同文件和库的程序,我在家里不可用。

我该如何解决这个问题?这是在虚拟机上运行 OpenGL 程序的常见问题吗?

4

1 回答 1

1

这是您的 GLX 服务器告诉您的一种神秘方式:它从未听说过glXCreateContextAttribsARB(GLX OpCode 34)。换句话说,您的系统不支持GLX_ARB_create_context. 解释为什么会这样的最好方法是运行类似的东西glxinfo -v并将输出添加到您的问题中。

正如glxgears清楚地展示的那样,可以在您的系统上创建一个没有此扩展的工作上下文。我不得不想象 freeglut3 应该足够聪明,如果你不要求任何花哨的东西(例如,不要要求核心配置文件上下文或特定的主要/次要版本),就不会使用扩展。如果不是,那么您将不得不找到更复杂的 GLX 实现或使用不同的框架。

于 2014-02-12T11:36:53.343 回答