OpenGL을 활용하여 원격 프로세스를 시작하기 위해 SSH를 통해 X11 세션을 전달하는 데 관심이 있습니다.누각익숙한 사람을 위해. )
제가 겪고 있는 문제는 그래픽 카드 불일치로 인해 Gazebo가 충돌하는 것입니다. "NV-GLX" 확장자를 찾을 수 없습니다. 정확한 오류 출력:
Xlib: extension "NV-GLX" missing on display "localhost:10.0".
Xlib: extension "NV-GLX" missing on display "localhost:10.0".
X Error of failed request: GLXUnsupportedPrivateRequest
Major opcode of failed request: 149 (GLX)
Minor opcode of failed request: 16 (X_GLXVendorPrivate)
Serial number of failed request: 24
Current serial number in output stream: 25
원격 컴퓨터는 NVIDIA 카드로 실행되는 반면 로컬 컴퓨터는 AMD 카드를 사용합니다.
저는 NVIDIA 카드를 사용하는 두 컴퓨터 사이에서 Gazebo의 X11 포워딩을 테스트했습니다. 그것은 아주 잘 작동합니다.
내가 알 수 있는 바에 따르면 다음 세 가지 중 하나가 일어나고 있는 것 같습니다.
- 내가 뭔가 잘못했어
- 내가 하고 싶은 일은 불가능하다
- Gazebo는 다양한 하드웨어에 대한 분기 코드 경로를 사용하여 불가지론적인 방식으로 구축하지 않습니다. 구축 시 시스템의 모습을 얻을 수 있습니다.
원격 컴퓨터는 Ubuntu를 실행하고 내 로컬 컴퓨터는 10.8.2를 실행하는 Mac입니다. XQuartz에서 xclock과 같은 기능을 켤 수 있기 때문에 정상적인 사용을 위해 x11 전달이 올바르게 설정되어 있다는 것을 이미 알고 있습니다. 이 솔루션(존재하는 경우)은 WinSCP 기반 Windows를 포함한 다른 운영 체제에서도 가장 잘 작동합니다.
답변1
일부 댓글은 다음에서 왔습니다.GLX 위키피디아 기사:
GLX는 클라이언트(OpenGL 응용 프로그램)가 X 서버(디스플레이를 담당하는 소프트웨어)에 3D 렌더링 명령을 보낼 수 있도록 하는 X 프로토콜의 확장입니다.클라이언트와 서버 소프트웨어는 서로 다른 컴퓨터에서 실행될 수 있습니다.
그리고
클라이언트와 서버가 동일한 컴퓨터에서 실행되고 적절한 드라이버가 포함된 가속 3D 그래픽 카드를 사용할 수 있는 경우 DRI는 처음 두 구성 요소를 우회할 수 있습니다. 이 경우 클라이언트 애플리케이션은 여러 API 계층을 통해 비디오 하드웨어에 직접 액세스할 수 있습니다.
나는 첫 번째 요점이 이것이 가능한지 여부에 대한 귀하의 질문에 답한다고 믿습니다. 그것은 확실히 가능해야 합니다. 클라이언트 프로그램이 로컬 X 서버(NV GLX 드라이버)의 기능을 사용하도록 요구하는 이유에 대한 두 번째 가능한 설명은 아마도 localhost:10.0
동일한 시스템이라고 생각하여 직접 연결을 시도할 수도 있습니다.
시도해 볼 가치가 있는 것들:
- 대신에
gazebo
시도해 보세요glxdemo
. - 가능하다면 두 컴퓨터를 모두 동일한 네트워크에 두고 SSH를 제외하세요.
- 큰 총:
strace
전화gazebo
해서 nv-glx가 로드되는 이유를 알아보세요.
행운을 빌어요!