VirtualGLソリューション
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/10/22 01:49 UTC 版)
「VirtualGL」の記事における「VirtualGLソリューション」の解説
VirtualGLはGLXの分岐(GLX forking)を使用して、アプリケーションサーバー上でOpenGLレンダリングを実行する。UnixとLinuxのOpenGLアプリケーションは、通常GLXコマンドと普通のX11コマンドの両方を同じXディスプレイに送信する。GLXコマンドはOpenglレンダリングコンテクストと特定のXウィンドウとのバインディングや、Xディスプレイが対応するピクセルフォーマットリストの取得などに使用される。VirtualGLはアプリケーションへのライブラリのプレロード(preload)が可能であるというUnixとLinuxの特徴をうまく利用して、通常はアプリケーションがリンクされた共有ライブラリに対して実行する特定のファンクションコールを効果的に横取りする(これを「割り込み」(interposing)という)。 いったんVirtualGLが、UnixやLinuxのOpenGLアプリケーションにプレロードされると、VirtualGLはアプリケーションから発行されるGLXファンクションコールを割り込みによって取得し、それらを書き換えて、対応するGLXコマンドが3Dハードウェアアクセラレーターを搭載しているアプリケーションサーバのXディスプレイへ送信されるようにする。 したがってVirtualGLはユーザーのXディスプレイや、VNCなどのGLXに対応していない仮想Xディスプレイ(Xプロキシ)へ、GLXコマンドがネットワーク経由で送信されるのを防ぎ、GLXコールの書き換え時にOpenGLレンダリングの出力先をオフスクリーンピクセルバッファ(Pバッファ)へと変更する。その一方で、アプリケーションのユーザインターフェースを描画する通常のX11コマンドなど、アプリケーションが発行するその他のファンクションコールはそのまま通過させる。 また、VirtualGLの割り込みエンジンは内部処理としてウインドウとPバッファとのマップを保持し、送り先のXディスプレイと3Dレンダリングを実行するXディスプレイとの視覚特性を適合させ、GLXのシームレスな転送を確保できるようさまざまなハッシュ関数を実行している。原則的には、いったんOpenGLコンテキストがアプリケーションサーバのXディスプレイ上に確立されると、その後のOpenGLコマンドはすべてがアプリケーションサーバの3DハードウェアへVirtualGLを介することなく送信されるようになる。このようにして、アプリケーションサーバのハードウェアとドライバが提供している任意のOpenGL機能と拡張機能をアプリケーションが自動的に使用できるようになる。 GLXコマンドの整理とPバッファの管理以外にも、VirtualGLは適切な時間で描画されたピクセル(通常はglXSwapBuffers()やglFinish()によってモニタリングされる)を読み戻し(reads back)、標準的なXの画像描画コマンドを使用してアプリケーションのXウインドウにそのピクセルを描画する。 VirtualGLはGLXコマンドを目的のXディスプレイからアプリケーションサーバへとリダイレクトするため、VNCのようなXプロキシに3Dアクセラレーションのサポートを追加するだけではなく、リモートXディスプレイ使用時に間接的なOpenGLレンダリングが発生するのを防ぐこともできる。 VirtualGLをVNCなどのXプロキシと連携させると、ひとつのアプリケーションサー上で複数のユーザーが3Dアプリケーションを同時に実行したり、複数のクライアントでセッションを共有したりできる。しかしながらVNCなどは無地の広い領域を持ち、色数が少なく、フレーム間の差異が少ない2Dアプリケーションを扱うように最適化されている。3Dアプリケーションはその反対に緻密な画像を作成し、複雑な色パターンを持ち、フレーム間の相関もとても少ない。OpenGLアプリケーションでレンダリングされた画像をXウィンドウに描画する負荷は、基本的にはビデオプレイヤーのそれと等しい。しかし、市販のシンクライアントソフトウェアにはこうした負荷をインタラクティブなフレームレートで処理するのに十分高速なイメージコーデックが備わっていない。 VirtualGLは二つの方法でこの問題に対処している: TurboVNC VGL画像トランスポート
※この「VirtualGLソリューション」の解説は、「VirtualGL」の解説の一部です。
「VirtualGLソリューション」を含む「VirtualGL」の記事については、「VirtualGL」の概要を参照ください。
- VirtualGLソリューションのページへのリンク