9

1台のPCから8〜12台のモニターを駆動する必要があり、すべてが1つの3Dシーングラフの異なるビューをレンダリングするため、複数のグラフィックカードを使用する必要があります。現在dx9で実行しているので、これを簡単にするためにdx11に移行することを検討しています。

初期の調査では、明らかなアプローチが機能しないことが示唆されているようです。各カードを別々のプロセスから駆動しない限り、パフォーマンスはお粗末です。Web検索は何も出てこない。dx11を使用した単一のプロセスから複数のカードを同時に利用するための最善の方法を誰かが提案できますか?

4

3 に答える 3

6

あなたはすでに解決策にたどり着いているようですが、この質問にたどり着いた他の誰かのために、私自身の最近の経験を投入するのは良いことだと思いました...

はい、単一のプロセスから任意の数のアダプターと出力を駆動できます。役立つ情報を次に示します。

DXGI および DX11 の場合:

各グラフィックス カードは「アダプタ」です。各モニターは「出力」です。これらの列挙の詳細については、こちらを参照してください。

使用するアダプターへのポインターを取得したら、アダプターごとにD3D11CreateDeviceを使用してデバイス (ID3D11Device) を作成します。デバイスごとに対話するための別のスレッドが必要な場合があります。このスレッドは、速度向上に役立つ場合、特定のプロセッサ アフィニティを持っている可能性があります。

各アダプターが独自のデバイスを持ったら、出力ごとにスワップ チェーンレンダー ターゲットを作成します。また、出力ごとに深度ステンシル ビューを作成することもできます。

スワップ チェーンを作成するプロセスでは、ウィンドウをセットアップする必要があります (出力ごとに 1 つのウィンドウ)。スワップ チェーンを含むウィンドウからレンダリングを実行するメリットはあまりないと思います。スワップ チェーンのホストとしてウィンドウを作成するだけで、後で完全に忘れることができます。

レンダリングするには、各デバイスの各出力を反復処理する必要があります。出力ごとに、デバイスのレンダー ターゲットを、OMSetRenderTargetsを使用して現在の出力用に作成したレンダー ターゲットに変更します。繰り返しますが、必要に応じて各デバイスを異なるスレッドで実行することもできます。そのため、各スレッド/デバイスのペアには、レンダリング用の出力を通じて独自の反復があります。

このプロセスを進める際に役立つリンクの束を次に示します。

モニターごとに異なる画像を表示する directX 10

Windows 7 での DXGI と 2 つ以上の全画面表示

http://msdn.microsoft.com/en-us/library/windows/desktop/ee417025%28v=vs.85%29.aspx#multiple_monitors

幸運を!

于 2013-03-16T21:38:29.737 に答える
2

Directx をアップグレードする必要はないかもしれません。この記事
を参照してください。

于 2012-05-31T16:15:28.500 に答える
1

IDXGIFactory を使用して使用可能なデバイスを列挙し、それぞれに ID3D11Device を作成してから、異なるスレッドからフィードします。うまくいくはずです。

于 2012-05-24T20:55:09.960 に答える