【问题标题】:Programatically selecting the best graphics card for DirectX rendering以编程方式为 DirectX 渲染选择最佳显卡
【发布时间】:2016-10-04 02:12:24
【问题描述】:

我正在开发一种产品,该产品使用 DirectX 来渲染一些更密集的图像。到目前为止,我知道有些计算机有多个 GPU,所以我通过以下方法找到具有最大 AdapterRam 的 GPU 来选择要渲染的 GPU:

using ( ManagementObjectSearcher searcher = new ManagementObjectSearcher( "select * from Win32_VideoController" ) ) {
    foreach ( ManagementObject mo in searcher.Get() ) {
       var adapterRam = mo.Properties[ "AdapterRAM" ].Value;
       //Use this one if it is the largest
    }
}

我有一些用户遇到了一个问题,他们有一个集成的 Intel 视频卡,谎称它有多少 AdapterRAM,所以它被选中了。我认为它报告了一些已分配的系统 RAM。绘图操作对这张卡来说太密集了,并且导致视频驱动程序崩溃。这台电脑确实有一张功能完美的 Nvidia 卡,应该是被选中的那张。

我认为解决此问题的一个好方法是永远不要选择集成卡而不是已安装的卡,但我还没有找到一种方法来以编程方式确定卡是否集成。

有什么方法可以检测卡是集成还是安装?

有没有更好的方法来选择哪个 GPU 更优?

【问题讨论】:

    标签: c# windows directx gpu


    【解决方案1】:

    枚举适配器的 DirectX 方法在此处的 Microsoft 编程指南https://msdn.microsoft.com/en-us/library/windows/desktop/ff476877(v=vs.85).aspx 中进行了介绍。我不建议使用 Windows 管理对象来执行此操作。

    生成的 IDXGIAdapter 接口包含适配器的所有功能,识别集成适配器的方法在这篇文章 https://gamedev.stackexchange.com/questions/61938/how-to-check-if-user-has-integrated-graphics-card 中进行了介绍,不幸的是,您必须知道您希望避免的适配器的硬件 ID - 那里没有设置可以告诉您它是否已集成。

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 2015-10-31
      • 1970-01-01
      • 2014-09-12
      • 2019-11-10
      • 2011-09-01
      • 1970-01-01
      • 2010-11-19
      相关资源
      最近更新 更多