OpenGL代码无法运行:显示器不支持OpenGL GLX扩展。

5

我需要运行一段代码,它使用了GL/glut.h和GL/glew.h两个库。这段代码可以通过以下指令编译成功:

$ gcc test.c -lglut -lGLEW -lGL

但是当我运行它时,我会得到以下错误:
freeglut (./a.out): OpenGL GLX extension not supported by display ':0.0'

同样的代码在我的另一个系统上可以工作,但是那个系统突然崩溃了,甚至无法启动,所以我必须在这个系统上完成它。

$ glxinfo 的输出结果为:

name of display: :0.0
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Error: couldn't find RGB GLX visual or fbconfig

Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".

此外,$ lspci 的输出结果如下:
00:00.0 Host bridge: Intel Corporation Device 0150 (rev 09)
00:01.0 PCI bridge: Intel Corporation Device 0151 (rev 09)
00:16.0 Communication controller: Intel Corporation Cougar Point HECI Controller #1 (rev 04)
00:1a.0 USB Controller: Intel Corporation Cougar Point USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation Cougar Point High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 1 (rev b4)
00:1c.5 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 6 (rev b4)
00:1d.0 USB Controller: Intel Corporation Cougar Point USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation Device 1c5c (rev 04)
00:1f.2 SATA controller: Intel Corporation Cougar Point 6 port SATA AHCI Controller (rev 04)
00:1f.3 SMBus: Intel Corporation Cougar Point SMBus Controller (rev 04)
01:00.0 VGA compatible controller: nVidia Corporation GT218 [GeForce 210] (rev a2)
01:00.1 Audio device: nVidia Corporation High Definition Audio Controller (rev a1)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)

请帮助我,我认为nvidia显示驱动程序没有正确安装,但我无法解决这个问题。我也安装了CUDA。


与此相关的内容:https://dev59.com/GWoy5IYBdhLWcg3wcNvh?rq=1 - Ciro Santilli OurBigBook.com
1个回答

1
这不是一个编程问题,而是一个系统配置问题。实际上,它告诉你,你的系统配置不支持OpenGL。
GLX是X11协议扩展,用于在X11 drawable上设置OpenGL上下文。然而,这是设备驱动程序提供的扩展。你正在使用一张NVidia显卡。我的猜测是,这是一个普通的系统安装,没有自动安装专有的nvidia驱动程序,也没有配置开放的nouveau驱动程序。
因此,X11服务器可能使用nv、fbdev或vesa驱动程序中的任何一种;这些都不支持OpenGL/GLX。
解决方案:安装和配置适当的驱动程序。要么是nouveau,要么是你可以从http://www.nvidia.com/object/unix.html下载并安装的驱动程序。
你说你已经安装了CUDA,那么你必须在/etc/X11/xorg.conf文件中配置nvidia驱动程序,因为如果同时安装了nouveau或nv,则会先采用它们。
请记住,每次进行内核更新时,您都需要重新安装CUDA驱动程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接