VNC를 사용하여 OpenGL 그래픽을 원격으로 표시하려면 어떻게해야합니까?


24

VNC를 통해 뷰포트에서 모델을 렌더링하기 위해 OpenGL을 사용하는 프로그램을 실행하려고합니다.

내가받는 오류 메시지는-Xlib : 확장 "GLX"가 디스플레이 ": 1.0"에 없습니다.

VNC가 모든 그래픽을 원격으로 렌더링하고 압축 된 화면을 디스플레이 버퍼에서 로컬 클라이언트로 보내도록 구성 할 수 있다는 것을 이해했습니다. 이것은 로컬 클라이언트에서 GLX 확장에 대한 필요성을 부정하는 것처럼 보입니다. VNC를 이런 식으로 구성 할 수 있습니까? 그리고 방법을 간단히 설명해 주시겠습니까?

원격 호스트:

RHEL 5의 vncserver

로컬 클라이언트 :

Windows XP의 UltraVNC


OpenGL 프로그램이 RH # L5 콘솔에서 로컬로 작동합니까? X-Windows를 통해 원격으로 작동합니까? 그렇지 않으면 VNC에서 작동하지 않습니다.
kmarsh

2
왜 이것이 커뮤니티 위키입니까?
Chris S

커뮤니티 위키라면 사람들이 질문을 편집하여 보관과 관련성이 더 높아질 수 있다고 생각했습니다.
Jared Brown

답변:


17

당신은 가상 GL 을보고 싶을 수도 있습니다

인용 : "VirtualGL은 모든 Unix 또는 Linux 원격 디스플레이 소프트웨어에 완전한 3D 하드웨어 가속으로 OpenGL 응용 프로그램을 실행할 수있는 오픈 소스 패키지입니다."


14

x11vnc 를 사용 하여 모니터가 표시하는 모든 것에 원격으로 액세스하고 있습니다. x11vnc는 로컬 X11 서버와 통신하고 vnc를 통해 서버에서 클라이언트로 프레임 버퍼를 복사합니다. 로컬 X11 서버는 하드웨어 가속으로 모든 것을 렌더링하므로 모든 멋진 데스크탑 효과에서도 VNC를 통해 하드웨어 가속 OpenGL을 얻습니다. 이것이 x11vnc를 시작하는 방법입니다.

x11vnc -rfbauth ~/.vnc/passwd  -display :0 -forever -bg -repeat -nowf -o ~/.vnc/x11vnc.log

거의 모든 vnc 뷰어가 작동한다고 생각하지만 turbovnc 또는 tigervnc를 권장합니다. 먼저 VirtualGL을 사용해 보았지만 전체 OpenGL에는 적합하지 않지만 개별 OpenGL 응용 프로그램에만 적합합니다.

xrandr를 사용하여 display / vnc의 해상도를 변경할 수도 있습니다. 예를 들면 다음과 같습니다.

xrandr -q (to see available modes and outputs)
xrandr --output DVI-I-0 --mode "1024x768" (change mode on DVI output)

(사용 가능한 모드로 충분하지 않은 경우 새 해상도를 추가 할 수 있지만 여기서 범위를 벗어납니다.)

이제 완전히 OpenGL 하드웨어 가속 및 크기 조정이 가능한 VNC 세션이 있습니다.


1
Tesla K80 GCE 머신에서 xfce4와 blender로이 접근법을 시도했습니다 ... 그것은 완벽하게 작동했습니다. 그놈 쉘은 여전히 ​​그렇듯이 어떤 이유로 든 제대로 표시되지 않습니다. askubuntu.com/questions/229989/…
Ray Foss

1

UltraVNC에서 사용하는 특수 비디오 후크 드라이버를 비활성화하거나 TightVNC를 사용하십시오.

UltraVNC 드라이버는 성능을 향상시키는 데 사용되므로 OpenGL과 같은 비디오 카드에서 수행되는 모든 종류의 비디오 처리가 중단됩니다.

UltraVNC에서 기본적으로 설치하는 비디오 드라이버는 OpenGL 그래픽을 표시 할 수 없도록합니다. 드라이버를 비활성화하면 성능이 크게 저하됩니다. 또한 OpenGL 성능으로 렌더링 된 항목을 표시하는 동안 클라이언트 시스템에 더 많은 작업이 필요하고 필요한 대역폭이 훨씬 높아 지므로 양쪽 끝에서 문제가 발생합니다. 프레임 당 4 초 이상을 기대하지 마십시오 (4fps가 아닌 0.25fps와 유사)


UltraVNC에서 비디오 후크 비활성화를 말하면 로컬 클라이언트를 참조하고 있습니까? 원격 호스트에서 실행되는 vncserver를 대신 구성하지 않아도됩니까?
Jared Brown

아니요, 로컬 고객을 의미합니다. UltraVNC에는 비디오 드라이버가 설치되어 있습니다. 명시 적으로 달리 언급하지 않는 한 비디오 드라이버는 클라이언트 측에서 모든 비디오를 처리하여 네트워크를 통해 사용할 수 있도록 압축하고 스트리밍 할 수 있습니다. 때때로이 기능을 사용하지 않으려는 뷰어에서 뷰어를 지정할 수도 있지만 UltraVNC (적어도 익숙한)는이를 무시하는 경향이 있습니다.
IceMage

또한 원격 및 로컬은 관점에 따라 다릅니다. 로컬이라고 할 때 실제로 호스트 (새 연결을 수신하는 컴퓨터)를 의미하고 원격은 컴퓨터가 연결을 의미합니다. 향후 게시물에 대해이 문제를 해결하겠습니다.
IceMage

OK-나는 반대 링고를 사용하고 있다고 생각합니다. UltraVNC 뷰어를 설치할 때 비디오 드라이버가 설치되어 있다고 생각하지 않습니다. 내가 아는 UltraVNC 서버는 사용하고 있지만 사용하지는 않습니다. RHEL5 시스템에서 vncserver를 호스트로 사용하고 있습니다.
Jared Brown

내 진짜 질문은 GLX 명령을 보내지 않고 디스플레이 버퍼에서 UltraVNC 뷰어로 압축 화면을 보내도록 vncserver를 어떻게 구성합니까?
Jared Brown
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.