OpenGL代码未运行: OpenGL GLX extension not supported by display

标签 opengl nvidia glew freeglut glx

我必须运行一个代码,它包括库 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。

最佳答案

这不是编程问题,而是系统配置问题。本质上,它告诉您,您的系统配置不支持 OpenGL。

GLX 是 X11 协议(protocol)扩展,用于在 X11 可绘制对象上设置 OpenGL 上下文。然而,这是设备驱动程序提供的扩展。您正在使用 NVidia 卡。我的猜测是,这是系统的普通安装,不会自动安装专有的 nvidia 驱动程序,也不会配置开放的 nouveau 驱动程序。

因此,X11 服务器可能使用 nvfbdevvesa 驱动程序;这些都不支持 OpenGL/GLX。

解决方案:安装并配置正确的驱动程序。 nouveau 或您可以从 http://www.nvidia.com/object/unix.html 下载的驱动程序并安装它。

你说你安装了CUDA,那么你必须在/etc/X11/xorg.conf文件中配置nvidia驱动程序,因为如果安装了nouveau或nv以及前面的内容。

另请记住,每次进行内核更新时,都必须重新安装 CUDA 驱动程序。

关于OpenGL代码未运行: OpenGL GLX extension not supported by display,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23053822/

相关文章:

opengl - 使用 DevIL 或 SOIL 保存 openGL 输出

opengl - 使用 SOIL - OpenGL 的奇怪 mip 贴图相关问题

opengl - 如何为 glDrawElements() 指定每个图元的颜色

c++ - glew 和 gltools 的问题,_glewInit 已经定义

java - LWJGL 创建 3D 世界

cuda - NvLink 或 PCIe,如何指定互连?

python - 在Theano中启用CNMeM但 'cuDNN not available'有什么影响?

c++ - 多个 CUDA 流导致 GPU 崩溃

c++ - glpointsize() 缩小一个点失败

c++ - glGenBuffers 访问冲突异常