リモート接続を介して3Dを効率的に使用する方法


11

弱いPC(クライアント)が1つありますが、許容可能な3Dパフォーマンスがあり、OpenGLを使用してアプリケーションを2回(つまり、クライアントに対してローカルとリモートで1回)実行できる、強力なPC(サーバー)が1つあります。現在、私ssh -Xはそれに興味を持っていますが、クライアントのコンソール出力にはソフトウェアレンダリングが使用されており、毎秒3フレーム(fps)しか得られません。実際、これはLAN上にあるため、sshの暗号化は必要ありませんが、リモートアプリケーションの場合はすでに知っています。

では、クライアントのパフォーマンスを向上させるにはどうすればよいでしょうか。私のアイデアは

  • ハードウェアアクセラレーションを使用しますが、サーバーまたはクライアントのアクセラレーションとその方法は?
  • sshとは異なるものを使用する

フル解像度で高度な圧縮を行わないと、100 Mbit / s LANでfpsが増えることはありませんが、それはcaのウィンドウアプリケーションです。800x450なので、理論的には最大12 fps(24ビット/ピクセル)が非圧縮グラフィックデータを使用して可能になるはずです。そして、クライアント独自のGPUまたはスマート圧縮を使用することで、より良いものが可能になるかもしれません。

-

編集は私がしたいことは基本的に何等のローカルバージョンで判明onlivegaikai申し出。Linuxにはこのようなものがありますか(そしておそらく無料です)?

-

edit2 VirtualGLは最良の解決策のように見えますが(現時点では機能しません)、クライアントでハードウェアレンダリングを実行することも可能かどうかも疑問に思います



とにかくPCが隣り合っているのでフォローアップします。1人のPCを2人のユーザーに使用しないのはなぜでしょうか。
Tobias Kienzler 2010

回答:


6

VirtualGLTurboVNCと一緒にチェックアウトすると、100 Mビットで20fps @ 1280x1024が提供されます(ウィキペディアを参照)。

すべてのアプリケーションで機能するとは限らないことに注意してください。OpenGLの使用方法によって異なります。


+1このサウンドは、私が探しているものとまったく同じです。ありがとうございます。(テストが(うまくいけば)うまくいけば答えを受け入れます)
Tobias Kienzler、


私は現在、pbufferをサポートする新しいPCを持っていますが、残念ながら今はvglrun segfaultが発生しています。これは、サーバーが64ビットで実行され、クライアントが32ビットで実行されているためでしょうか?
Tobias Kienzler、2011年

(正解であり、segfaultは別の質問であるため受け入れられました)
Tobias Kienzler '05年

1

これは古い質問ですが、まだ関連があります。ローカルハードウェア上のリモートアプリケーションのX11 3Dレンダリングを構成およびトラブルシューティングする方法について、ステップバイステップのマニュアルがあります。リモートx11 ssh接続によるOpenGLハードウェアアクセラレーション

この記事では、例としてChromium BSUゲームを使用しています。SSH接続を介したデフォルトのソフトウェアレンダリングで5〜8 FPS、間接ハードウェアレンダリングで30 FPS、暗号化されていないTCP X11接続で30 FPS以上で動作します。一部のアプリケーションでのみ機能することに注意してください。

記事の簡単な要約

デフォルトのX11サーバー構成では、間接レンダリングとTCP接続は無効になっています。+iglx and -listen tcpパラメータはそれらを有効にします。LIBGL_ALWAYS_INDIRECT=1X11クライアントで間接レンダリングを強制する変数もあります。


ご回答有難うございます。ただし、リンクが機能しなくなった場合に備えて、リンクされたブログ投稿の要旨をここに記しておくことを強くお勧めします(たとえばlightdmiglx" with with "などと言ったとしても)。現在、これはもう必要ありませんが、次回は試してみます;)誰か他の人もあなたの発見が役に立ったと思うかもしれません。
Tobias Kienzler 2017年

いい視点ね。記事の主な詳細を追加しました。
evpo 2017年

0

デスクトップPCが2台ある場合は、これが当てはまる可能性があります。しかし、自宅のどこでも使用できる古いWiFiラップトップ(たとえば、クライアントとしてUbuntu 10.04を搭載したTi5600、予備のWi-Fiルーターを備えたGTXボードを備えたデスクトップPC)がある場合は、リモートOpenGLクライアントを用意することをお勧めします。

問題は、リモート(サーバー側)OpenGLコンテキストを取得することです。クライアントでssh -Xを実行できます。しかし、リモートシステムでglxinfoを実行すると、ローカルクライアントが取得され、開始した場所に戻ります。DISPLAY環境変数をそのリモートホストに設定し、その画面をセカンドモニターとして使用することもできますが、それでも役に立ちません。

もう1つの解決策は、リモートGLXコンテキストを使用できるようにデスクトップアプリケーションを作成することです。

http://arrayfire.com/remote-off-screen-rendering-with-opengl/


ありがとうございました。Xプロトコルが3Dを送信する代替手段はありますか?申し訳ありませんが、サーバーとクライアントを引用符で囲んでおく必要がありました。強いPCと弱いPCには、短い言葉しか使わないつもりでした。両方のPCを、デスクトップPCと同じようにフロントエンドとして使用する必要がありますが、すべてのCPUが動作します。優れたPCによるRAMアクセス。弱いPCには、アプリケーション自体を実行するのに十分なCPUパワーとRAMがありません
Tobias Kienzler

私が知っていることではありません。あなたが考えている種類の3Dには、たくさんの帯域幅が必要です。
Keith、

本当のこと:(大藤、onlivegaikaiなどが、これはインターネット上のゲームのためにも、可能であると主張...
トビアスKienzler

わかりました。彼らもそのようにフレームを送信しているとは思わない。既存のオンラインゲームと同様に、ローカルでダウンロードして実行し、制御情報と更新情報のみを送受信します。たとえそうしたとしても、高圧縮のためには低解像度である必要があります。
Keith、

私の理解では、彼らはゲームをリモートで実行し、キーボードとマウスのイベントを受信しながらビデオのHDストリームを送信するだけです。しかしもちろん、圧縮なしではインターネット上で30 fpsをHDで送信することはできませんでした...
Tobias Kienzler
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.