1

我正在开发适用于多显示器的 SlimDX 应用程序。应用程序将占据选定的显示,并且它的选择是通过命令行输入的,如 int。然后我用System.Windows.Forms.Screen.AllScreens[selection]它来了解绑定,并在该显示器上“全屏”显示我的应用程序。

现在,为了优化性能,我需要选择哪个 gpu 适配器来初始化 Direct3D 的设备。如何找出哪个 gpu 适配器正在为选定的显示器供电?

由于每个 gpu 适配器可能连接一到两个显示器,因此我无法使用显示器编号。

我正在使用 Direct3D10。我不介意 Direct3D9 中的解决方案。

更糟糕的情况是让用户通过命令行选择显示器和适配器,但我更喜欢傻瓜证明方法。

谢谢

4

1 回答 1

2

D3D10 和 D3D11 都使用 DXGI 来管理这样的细节。您创建的 Factory 界面可让您获取系统上安装的适配器列表。每个适配器可以有一个或多个输出,您可以从适配器接口枚举。

这将为您提供一个 Output 接口列表,其中包含一个 Description 属性,其中包含输出边界的 Rectangle 以及运行它的监视器的 IntPtr 句柄。

我不认为 Winforms Screen 类暴露了底层的原生指针,这就是为什么我们提供 SlimDX.Windows.DisplayMonitor 类作为 Screen 类的替代品。您可以使用它来确定显示器的特定细节,并根据您的需要选择合适的适配器。

于 2011-03-01T21:33:57.097 回答