找出哪个显示器属于哪个适配器?

时间:2011-02-24 04:52:31

标签: directx direct3d gpu slimdx

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

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

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

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

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

由于

1 个答案:

答案 0 :(得分:2)

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

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

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