C++Directx 11多个视频卡

C++ Directx 11 Multiple Video Cards

本文关键字:视频卡 C++Directx      更新时间:2023-10-16

我正在用C++编写一个程序,使用directx 11进行图形处理。我的笔记本电脑有一个重量轻的英特尔显卡,用来延长我的电池寿命,应该只用于"轻量级"图形。我还安装了另一个功能强大得多的视频卡。

我想知道如何指定在directx中使用哪种视频卡?当我创建设备时,有没有办法指定在我的代码中使用哪张卡?

感谢

如果你的卡是intel/nvidia组合,你有两个选项:

-首先是将英伟达卡设置为首选设备(在nvidia控制面板中,管理3d设置、全局/程序设置,更改首选图形处理器。

使用代码的另一种方法是使用DXGI枚举适配器,并尝试获得具有受限功能级别的设备(如果CreateDevice不可用,则会失败,并且大多数intel卡都是10.1)

http://msdn.microsoft.com/en-us/library/windows/desktop/bb174538(v=vs.85).aspx到枚举适配器。

然后尝试为每个适配器创建D3D_FEATURE_LEVEL_11_0设备,只会创建支持它的适配器。

我也遇到了类似的问题。我还没有尝试升级我的显卡驱动程序,但当我把电脑插回互联网时,我会的。

以下是我的发现以及我如何"解决"(又称陪审团操纵)我的问题:

症状:

  1. 类似于上面的海报
  2. 我只有一个NVDIA显卡,它声称支持DirectX 11
  3. 当我在DirectX Caps Viewer中查看它时,它只支持DirectX 9.3及更低版本

解决方案:

  1. 向后遍历D3D_FEATURE_LEVEL,每次调用D3D11CreateDeviceAndSwapChain()
  2. D3D11CreateDeviceAndSwapChain()工作后,您就知道您已经找到了所选显卡支持的最大功能级别

也许有一种更漂亮的方法可以做到这一点,但这就是我的"问题"所在。显然,如果我的卡支持完整的DX11系统会更好,但在用户出现类似问题的情况下,这并不是一个糟糕的保护措施。至少我可以通过编程识别问题。