OpenGL Remote
リモートでOpenGLを動かしてローカルにその画面を写す方法
リモート Ubuntu 16.04 + GeForce GTX 1060 + lightdm
ローカル mac OS X High Sierra 10.13.4
で確認しました。
VirtualGL + VNC による方法
基本的には下記手順の通り。
リモートにVirtualGL のインストール
sudo dpkg -i virtualgl_*_amd64.deb
リモートのVirtualGL の設定
sudo systemctl stop lightdm
/opt/VirtualGL/bin/vglserver_config
vglserver_configの途中で確認される事項は下記を確認
User’s Guide for VirtualGL 2.2.1
sudo systemctl start lightdm
xauth merge /etc/opt/VirtualGL/vgl_xauth_key
リモートにTurboVNC のインストール
sudo dpkg -i turbovnc_*_amd64.deb
リモートでTurboVNCの起動
/opt/TurboVNC/bin/vncserver -depth 24
起動した時の:1などを確認。ポート番号や環境変数として指定する値になる。
ローカルからリモートへVNC接続
TurboVNCを起動した時:1であれば普通5901番ポートなので
VNCで<IPアドレス>:1に接続
真っ黒な画面が表示されれば成功
リモートのターミナルで表示させたいOpenGLアプリを起動する。
今回は歯車を表示してくれる glxgears を起動してみる。
DISPLAY=:1 vglrun glxgears
DISPLAY=:1 の数字は起動したVNCの番号による
Direct Rendering の確認
vglrun /opt/VirtualGL/bin/glxinfo -c |grep
実行した結果、Yesであればちゃんとビデオカードで処理されている(らしい)
X Forward による方法
上手く行きませんでした。
lightdm等のウィンドウマネージャにGLX アクセスを許可する。
lightdmだと /etc/lightdm/lightdm.conf.d/ に50-xserver-command.conf を作成し、下記を書き込む。
[SeatDefaults] xserver-command=X -core +iglx
環境変数のLD_PRELOADの設定はクライアントがMacの場合必要ないかも。
libGL の場所を探す。
find /usr -iname "*libGL.so*" -exec ls -l -- {} +
Mac OS X の場合 XQuartz を 2.7.9 以上にした上で下記コマンド
defaults write org.macosforge.xquartz.X11 enable_iglx -bool true