Raspberry Pi(Raspbian)で遠隔GUIとして便利に使っている TigntVNC はOpenGLに非対応です。今までOpenGL非対応でも不便を感じませんでしたが,OpenCVをアップグレードしたらTightVNCのwindowシステムがOpenGL非対応として蹴られるようになってグラフィックス表示ができなくなりました。
解決策をgoogleさんに聞くとDispmanx VNC がヒットしました。
Raspberry Pi 本体コンソールのGPU 画面をそのままVNCプロトコルでやりとりする仕掛けでOpenGL ES, OpenVG アプリケーションに対応します。
TightVNCはでデスクトップのサイズをVNC-server側で自在に設定できすが,Dispmanx VNCはRaspberry Pi 本体のデスクトップのサイズ(ディスプレイの解像度)と同じになります。
インストール
ビルドに必要なライブラリをインストール
$ sudo apt-get install libvncserver-dev
ソースコードをgithubから取得してビルド
$ git clone https://github.com/hanzelpeter/dispmanx_vnc.git $ cd dispmanx_vnc $ sh ./makeit
実行
$ sudo ./dispman_vncserver -r
参考事項
Dispmanx VNCはRaspberry Pi 本体に接続したディスプレイの解像度と同じになるので,ディスプレイを接続しなでRaspberry Piを起動しDispmanx VNC経由でデスクトップを表示させると,デフォルトでは640×480のサイズとなります。サイズをを変えるには/boot/config.txtのhdmiに関する記述を書き換える必要があります。
このwebページにconfig.txtの各パラメータの解説があります。
https://www.raspberrypi.org/documentation/configuration/config-txt.md
http://elinux.org/RPiconfig
#hdmi_group=nn,#hdmi_mode=mm の行頭の#を取りnn,mmを自分の使用環境に合わせた適切な値に書き換えます。
私の場合は,Rasberry Piに接続するディスプレイが1366×768 60Hzですので以下の設定を記述しています。
hdmi_group=2 hdmi_mode=81