VNCを使用してOpenGLグラフィックをリモートで表示するにはどうすればよいですか?


24

OpenGLを使用するプログラムを実行して、VNCを介してビューポートでモデルをレンダリングしようとして失敗しました。

表示されるエラーメッセージは次のとおりです。-Xlib:ディスプレイ ":1.0"に拡張子 "GLX"がありません。

VNCは、すべてのグラフィックをリモートでレンダリングし、圧縮された画面グラブを表示バッファーからローカルクライアントに送信するように構成できることを理解していました。これは、ローカルクライアントでのGLX拡張機能の必要性を無効にするようです。この方法でVNCを構成できますか、どのように簡単に説明できますか?

リモートホスト:

RHEL 5上のvncserver

ローカルクライアント:

Windows XP上のUltraVNC


OpenGLプログラムはRH#L5コンソールでローカルに動作しますか?X-Windows経由でリモートで動作しますか?そうでない場合、VNCでは機能しません。
kmarsh

2
なぜこれがコミュニティWikiなのですか?
クリスS

コミュニティWikiの場合、人々は質問を編集してアーカイブにもっと関連性を持たせることができると思いました。
ジャレッドブラウン

回答:


17

あなたは見てみたいことがあり、仮想GL

引用:「VirtualGLは、UnixまたはLinuxリモートディスプレイソフトウェアがOpenGLアプリケーションを完全な3Dハードウェアアクセラレーションで実行できるようにするオープンソースパッケージです」


14

x11vncを使用して、モニターに表示されているものにリモートアクセスします。x11vncはローカルX11サーバーと通信し、フレームバッファーをvncを介してサーバーからクライアントにコピーします。ローカルX11サーバーはすべてをハードウェアアクセラレーションでレンダリングするので、クールなデスクトップ効果がすべてあっても、ハードウェアアクセラレーションでOpenNCをVNC経由で取得します。これは私がx11vncを開始する方法です:

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

ほとんどすべてのvncビューアが動作すると思いますが、turbovncまたはtigervncをお勧めします。最初にVirtualGLを試しましたが、正常に動作しますが、デスクトップ全体ではなく、個々の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とブレンダーを使用してこのアプローチを試みました...完璧に機能しました。Gnome-shellは、いつものように、何らかの理由で適切に表示されません。askubuntu.com/questions/229989/...
レイ・フォス

1

UltraVNCが使用する特別なビデオフックドライバーを無効にするか、TightVNCを使用します。

UltraVNCドライバーはパフォーマンスを向上させるために使用されるため、OpenGLなど、ビデオカードで実行されるあらゆる種類のビデオ処理をドロップします。

UltraVNCがデフォルトでこれをインストールするビデオドライバーは、OpenGLグラフィックを表示できないようにします。ドライバを無効にすると、パフォーマンスが大幅に低下することに注意してください。また、OpenGLのパフォーマンスでレンダリングされたアイテムを表示すると、クライアントマシンの処理が多くなり、必要な帯域幅が大きくなるため、両端でパフォーマンスが低下することに注意してください。1フレームあたり4秒以上は期待しないでください(4 fpsではなく、0.25 fpsなど)


UltraVNCでビデオフックを無効にするというのは、ローカルクライアントを指しているのですか?代わりに、リモートホストで実行されているvncserverを構成する必要はありませんか?
ジャレッドブラウン

いいえ、ローカルクライアントを意味します。UltraVNCには、インストール時にインストールされるビデオドライバーが含まれています。特に明記しない限り、ビデオドライバーはクライアント側ですべてのビデオの処理を試み、ネットワーク上で使用するために圧縮してストリーミングできるようにします。この機能を使用したくないことをビューアで指定できる場合がありますが、UltraVNC(少なくとも以前は)はこれを無視する傾向があります。
IceMage

また、リモートとローカルはあなたの視点に依存します。ローカルとは、実際にはホスト(新しい接続をリッスンしているコンピューター)を意味し、リモートは接続を確立するコンピューターを意味します。今後の投稿のためにこれを修正します。
IceMage

OK-私は反対の専門用語を使用していると思います。UltraVNCビューアーをインストールしたとき、ビデオドライバーがインストールされているとは思わない。私が知っているUltraVNCサーバーはそうですが、私はそれを使用していません。RHEL5マシンでvncserverをホストとして使用しています。
ジャレッドブラウン

私の本当の質問は、GLCコマンドを送信せず、ディスプレイバッファーからUltraVNCビューアーに単純に圧縮された画面を送信するようにvncserverを構成するにはどうすればよいですか?
ジャレッドブラウン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.