이 질문을 한 지 오래되었습니다. 그래서 우리가 궁극적으로 사용한 솔루션을 언급 할 것이라고 생각했습니다.
로컬 X 화면 하이재킹
결국 서버의 로컬 X 화면에서 원격 OpenGL 프로그램을 실행했습니다. 컴퓨터가 우분투 서버 에디션을 실행 중이고 기본적으로 xserver를 실행하지 않았으므로 시작할 때 실행되도록 xserver를 설정해야했습니다 (방금 우분투의 우분투 데스크탑 패키지를 설치하여 슬레지 해머로 모기를 죽였습니다). 루트로 "export DISPLAY = : 0.0; xhost + local :"명령을 사용하여 X 화면에 액세스 할 수있었습니다. 그런 다음 컴퓨터로 ssh하고 "export DISPLAY = : 0.0"을 호출 한 다음 정상적으로 opengl 프로그램을 실행할 수 있습니다. 원격 컴퓨터에 앉아있는 사람은 누구나 창 팝업을보고 프로그램이 실행중인 것을 볼 수 있지만 모니터가 연결되어 있지 않으므로 문제가되지 않습니다.
온 스크린 컬러 버퍼에서 직접 픽셀을 읽으면 다른 윈도우에 의해 창이 가려지면 가비지 데이터가 발생할 수 있기 때문에 어떤 형태의 오프 스크린 렌더링을 사용하는 것이 중요합니다. X 화면이 보이지 않기 때문에 이것이 발생했는지 알기가 어렵습니다. 오프 스크린 렌더링 (예 : 프레임 버퍼 객체 (fbo) 또는 p 버퍼)에는이 문제가 없습니다.
서버의 로컬 Xscreen을 하이재킹하는 것은 이상적인 솔루션이 아니므로 다음과 같은 대안을 찾아보십시오.
가상 프레임 버퍼
Xvfb는 옵션이지만 OpenGL은 하드웨어 가속의 이점을 얻지 못하고 OpenGL과의 CUDA 상호 운용성에 필요한 프레임 버퍼 객체가 지원되지 않았기 때문에 나에게는 효과가 없었습니다. 그럼에도 불구하고, 이것은 로컬 화면 하이재킹이 허용되지 않거나 사용자가 xhost 권한을 얻을 수없는 경우에 실행 가능한 옵션 일 수 있습니다.
VirtualGL
VirtualGL 웹 사이트에서 :
VirtualGL은 모든 Unix 또는 Linux 원격 디스플레이 소프트웨어에 완전한 3D 하드웨어 가속으로 OpenGL 응용 프로그램을 실행할 수있는 기능을 제공하는 오픈 소스 패키지입니다.
이것은 내가 원하는 것인데 매우 유망 해 보이지만 새로운 라이브러리 종속성을 처리 할 시간이 없었으므로 테스트하지 않았습니다. 내 생각에 일단 컴파일, 설치 및 구성 할 수 있으면 이것이 이상적인 솔루션이라고 생각합니다. 이것이 VirtualBox와 일부 VNC 서버가 하드웨어 가속 3D를 지원하기 위해 사용하는 것입니다.