2

ディスプレイ ウォールのデモ アプリケーションを作成しています。

環境:

  • それぞれが最大 6 台のディスプレイを駆動する N 台のマシン
  • 有線ギガビットスイッチ
  • 各ノードで 1 つのコピーを実行して、きれいな絵を描く OpenTK アプリケーション

各ノードは、デモ実行可能ファイルの同一のコピーを実行します。各ノードには、壁全体の解像度と、その空間内のそのノードのディスプレイの相対位置を含む構成データもあります。レンダリング時に、投影行列の後にスケール/平行移動変換が適用されます (ノードがレンダリングを担当するビューの部分に効果的にズームインします。

ノードには、「送信」または「受信」モードにする起動スクリプトで設定された「モード」スイッチがあります。1 つのノードを除くすべてのノードが「受信」にあります。(ノードを「送信」に切り替えると、他のすべてのノードが「受信」に切り替えられます)。

デモ アプリは、いくつかのプリミティブ ジオメトリ (グリッド、20 面体など) の基本的な FPS タイプのフライスルーです。更新ごとに、送信側ノードは、いくつかの状態情報 (カメラの移動/回転、移動オブジェクトの変換) を含む UDP データグラムをブロードキャストします。

リスナーはこれらのデータグラムを非同期に受信し、状態を逆シリアル化し、ローカル コピーを更新します。

最終的な効果は、ラップトップでアプリを実行して飛び回ると、壁がうまく追従することです。これはすべてかなりうまく機能します。

ただし、システムの規模が拡大するにつれて (10 ディスプレイから、たとえば 500 ディスプレイに)、ネットワーク レイテンシが問題になるのではないかと懸念しています。また、このようにネットワーク全体で状態をスパムするのではなく、データベースに詰め込み、各ノードがそこからプルするようにするのが良いと思いましたが、既製のデータベースが最大になるとは思えません60FPS * 500 ノード サイクル。

提案?多くのノード間で状態を非常に高速に共有するための最良の方法は何ですか?

4

1 に答える 1

1

gamedev.stackexchange.comでかなり完全な応答を受け取りました。興味のある方はこちらからご覧いただけます。

于 2013-03-07T15:08:01.027 に答える