web-dev-qa-db-ja.com

GLX(OpenGL)のリモート直接レンダリング

SSH経由でOpenGL 2.1+アプリケーションを実行しようとしています。

[マイコンピュータ] --- ssh接続--- [リモートマシン](アプリケーション)

私はこのアプリケーションを実行するためにX転送を使用しており、そのことを念頭に置いて、このアプリケーションが3Dグラフィックスを実行する方法はいくつかあると思います。

  1. LIBGL_ALWAYS_INDIRECTを使用すると、コンピュータのグラフィックハードウェアを使用できます。 this post によると、これは通常OpenGLバージョン1.4に限定されています。
  2. リモートマシンでMesaソフトウェアレンダリングを使用する。これはOpenGLのより高いバージョンをサポートしますが、CPUを使用します。

ただし、私の場合、リモートマシンには適切なグラフィックカードが搭載されています。したがって、softwareレンダリングではなく、hardwareレンダリングできるかどうか疑問に思いました代わりにリモートでレンダリングします。

また、私のマシンのグラフィックスカードを使用する別の方法があれば、それもまたすばらしいでしょう。

7
Paul

選択は、必ずしも間接レンダリングとソフトウェアレンダリングの間ではなく、より正確には直接レンダリングと間接レンダリングの間です。直接レンダリングはXクライアント(リモートマシン)で行われ、レンダリング結果はXサーバーに転送されて表示されます。間接レンダリングは、GLコマンドをXサーバーに送信します。これらのコマンドはサーバーのハードウェアを使用してレンダリングされます。リモートマシンで3Dハードウェアを使用したいので、直接レンダリング(レンダリングされたラスターイメージをネットワーク経由で送信するオーバーヘッドを受け入れます)。

アプリケーションがOpenGL 1.4に対応できない場合は、直接レンダリングが唯一の選択肢です。

3

パッチを当てたopenglドライバーを実行するには、sshリモートセットアップが必要でした。しかし、これには、レンダリングのためにリモートXサーバーをハイジャックするなどのハックが含まれていました(リモートマシンにログインし、sshでログインして、DISPLAYを:0に設定)。あなたの場合、オフスクリーンのxserverを分離する方が理にかなっています。 xserverをオフスクリーンモードでリモートで起動できるかどうかは覚えていませんが、GPUドライバーがロードされています。 VirtualGLプロジェクトは、あなたが探しているものを正確にサポートすることを約束しているようです。私はこれまで試したことはありませんが、ウェブサイトは有望に見えます。

http://www.virtualgl.org/About/Introduction

他の代替手段はvncとxdmcpです。完全なリモートデスクトップ環境へのアクセスを許可します。

2
Pauli Nieminen