X11은 NVIDIA 카드를 실행하는 컴퓨터에서 AMD 카드가 있는 컴퓨터로 OpenGL 응용 프로그램을 전달합니다.

X11은 NVIDIA 카드를 실행하는 컴퓨터에서 AMD 카드가 있는 컴퓨터로 OpenGL 응용 프로그램을 전달합니다.

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 포워딩을 테스트했습니다. 그것은 아주 잘 작동합니다.

내가 알 수 있는 바에 따르면 다음 세 가지 중 하나가 일어나고 있는 것 같습니다.

  1. 내가 뭔가 잘못했어
  2. 내가 하고 싶은 일은 불가능하다
  3. 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동일한 시스템이라고 생각하여 직접 연결을 시도할 수도 있습니다.

시도해 볼 가치가 있는 것들:

  1. 대신에 gazebo시도해 보세요 glxdemo.
  2. 가능하다면 두 컴퓨터를 모두 동일한 네트워크에 두고 SSH를 제외하세요.
  3. 큰 총: strace전화 gazebo해서 nv-glx가 로드되는 이유를 알아보세요.

행운을 빌어요!

관련 정보