1

複数のディスプレイで動作するSlimDXアプリに取り組んでいます。アプリは選択されたディスプレイを占有し、その選択はコマンドラインを介してintとして入力されます。次にSystem.Windows.Forms.Screen.AllScreens[selection]、境界について調べ、そのディスプレイにアプリを「フルスクリーン」で表示するために使用します。

ここで、パフォーマンスを最適化するために、Direct3Dのデバイスを初期化するGPUアダプターを選択する必要があります。選択したディスプレイに電力を供給しているGPUアダプターを確認するにはどうすればよいですか?

各GPUアダプターには1つから2つのディスプレイが接続されている可能性があるため、ディスプレイ番号を使用できません。

Direct3D10を利用しています。Direct3D9のソリューションは気にしません。

最悪の場合は、ユーザーがコマンドラインからディスプレイとアダプターを選択できるようにすることですが、私はばかげた証明方法を好みます。

ありがとう

4

1 に答える 1

2

D3D10とD3D11はどちらも、このような詳細を管理するためにDXGIを使用します。作成するFactoryインターフェースを使用すると、システムにインストールされているアダプターのリストを取得できます。各アダプターは、アダプター・インターフェースから列挙できる1つ以上の出力を持つことができます。

これにより、出力インターフェイスのリストが表示されます。このインターフェイスには、特に、出力の境界のRectangleと、出力が実行されているモニターへのIntPtrハンドルを含むDescriptionプロパティがあります。

Winforms Screenクラスは、基になるネイティブポインターを公開しないと思います。そのため、Screenクラスの代わりにSlimDX.Windows.DisplayMonitorクラスを提供しています。これを使用して、ディスプレイの特定の詳細を判別し、ニーズに適したアダプターを選択できます。

于 2011-03-01T21:33:57.097 に答える