我想正确运行OpenGL程序。我使用的是带有GT 630M的笔记本电脑,操作系统是Fedora 16 64位。它使用大黄蜂,我必须在每个可执行文件访问GPU之前使用optirun
。链接到NVIDIA OpenGL库
这里是GLX信息:
[[email protected] WINDOWS_VERSIONS]$ glxinfo | grep OpenGL
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Mobile
OpenGL version string: 2.1 Mesa 7.11.2
OpenGL shading language version string: 1.20
OpenGL extensions:
[[email protected] WINDOWS_VERSIONS]$ optirun glxinfo | grep OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 630M/PCIe/SSE2
OpenGL version string: 4.2.0 NVIDIA 295.49
OpenGL shading language version string: 4.20 NVIDIA via Cg compiler
OpenGL extensions:
我试图编译程序是由一个名为“交互式计算机图形”一书,和源代码可以在这里下载:http://www.cs.unm.edu/~angel/BOOK/INTERACTIVE_COMPUTER_GRAPHICS/SIXTH_EDITION/
我简单地使用下面的命令编译示例程序:
nvcc -o example1 example1.cpp ../../Common/InitShader.cpp -I ../../include/ -I /usr/include/GL/ -L /usr/include/GL/ -lglut -lGL -lGLEW -lGLU -lX11 -lXmu -lXi -lm -lpthread
当我运行该程序,像这样optirun ./example1
我得到一个赛格故障。我不知道它是图书馆还是我编译它的方式,但似乎从来没有工作。 如果我尝试运行与./example1
我得到以下错误的例子:
glXCreateContextAttribsARB not found
如何开始的OpenGL 4.1这台笔记本电脑工作的任何想法?
注意:我的CUDA程序已成功运行。
UPDATE:LDD ./example1
[[email protected] WINDOWS_VERSIONS]$ ldd ./example1
linux-vdso.so.1 => (0x00007fff31b1c000)
libglut.so.3 => /usr/lib64/libglut.so.3 (0x00007f4d0b7dc000)
libGL.so.1 => /usr/lib64/libGL.so.1 (0x0000003990a00000)
libGLEW.so.1.6 => /usr/lib64/libGLEW.so.1.6 (0x000000389b600000)
libGLU.so.1 => /usr/lib64/libGLU.so.1 (0x00000038a0000000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x000000397a800000)
libXmu.so.6 => /usr/lib64/libXmu.so.6 (0x000000389f800000)
libXi.so.6 => /usr/lib64/libXi.so.6 (0x000000397c400000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003976800000)
libcudart.so.4 => /usr/local/cuda/lib64/libcudart.so.4 (0x00007f4d0b57d000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003983800000)
libm.so.6 => /lib64/libm.so.6 (0x0000003977400000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003977800000)
libc.so.6 => /lib64/libc.so.6 (0x0000003976400000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x000000397b000000)
libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1 (0x000000398e600000)
libXdamage.so.1 => /usr/lib64/libXdamage.so.1 (0x000000397f800000)
libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x000000397d000000)
libdrm.so.2 => /usr/lib64/libdrm.so.2 (0x0000003991200000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003976c00000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x000000397a000000)
libXt.so.6 => /usr/lib64/libXt.so.6 (0x0000003996e00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003976000000)
librt.so.1 => /lib64/librt.so.1 (0x0000003977000000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x000000397ac00000)
libSM.so.6 => /usr/lib64/libSM.so.6 (0x0000003988400000)
libICE.so.6 => /usr/lib64/libICE.so.6 (0x0000003988800000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003980800000)
'ldd。/ example1'的输出显示了什么?链接加载器很可能找到了mesa OpenGL库,而不是NVIDIA的。 – talonmies
@talonmies更新了问题以显示结果。 – sj755