2012-06-01 3 views
2

OpenGL 프로그램을 올바르게 실행하려고합니다. 저는 랩탑 승/GT 630M을 사용하고 있습니다. OS는 Fedora 16 64 비트입니다. 그것은 bumblebee를 사용하고 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로 예를 실행하려고한다면 어떻게 OpenGL을 4.1이 노트북에서 작동하려면에

glXCreateContextAttribsARB not found 

어떤 아이디어?

참고 : 내 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) 
+2

'ldd./example1'의 출력 내용은 무엇입니까? 링크 로더가 NVIDIA가 아닌 OpenGL 라이브러리 인 메사를 찾는 것 같습니다. – talonmies

+0

@talonmies 결과를 표시하도록 질문이 업데이트되었습니다. – sj755

답변

0

의 출력이 밝혀 내 프로그램은 NVIDIA의 OpenGL을 라이브러리에 연결되었다. 문제는 코드 자체에있었습니다. 이 꽤 많이 내 대부분의 문제를 해결 : 내가 컴파일 만

+0

죽은 링크가 있지만 여기에서 찾았습니다. http://web.archive.org/web/20130211010955/http://openglbook.com/glgenvertexarrays-access-violationsegfault-with-glew/ – personne3000

3

사실 그것은 VirtualGL 버그의 OpenGL을 4에서 발견 다듬기를 사용하는 모든 CG의 예제를 실행 할 수 있었다 이유 http://openglbook.com/glgenvertexarrays-access-violationsegfault-with-glew/

이 설명합니다. https://github.com/Bumblebee-Project/Bumblebee/issues/209

문제는 virtualgl의 새로운 (매일) 버전으로 해결할 수 있습니다 :

당신은 여기에서 더 많은 정보를 얻을 수 있습니다 http://virtualgl.sourceforge.net/vgl.nightly/ 그러나 당신이 하나를 제거해야 작동 얻을, 그것은 꿀벌이 함께 제공됩니다.

관련 문제