C ++ Directx 11多个视频卡

时间:2012-03-01 01:20:23

标签: c++ directx

我正在使用directx 11为我的图形编写C ++程序。我的笔记本电脑有一个轻巧的英特尔显卡,用于延长我的电池寿命,应该只用于“轻量级”图形。我还安装了另一个功能更强大的显卡。

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

由于

2 个答案:

答案 0 :(得分:2)

如果您的卡是某种intel / nvidia组合,您有两种选择:

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

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

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

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

答案 1 :(得分:0)

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

这是我发现的以及我如何“解决”(又称陪审团)我的问题:

症状:

  1. 与上面的海报类似。
  2. 我只有1张NVDIA显卡,声称支持DirectX 11
  3. 当我在DirectX Caps Viewer中查看它时,它只支持DirectX 9.3及更低版本。
  4. 解决方案:

    1. 向后遍历D3D_FEATURE_LEVEL,每次调用D3D11CreateDeviceAndSwapChain()。
    2. 一旦D3D11CreateDeviceAndSwapChain()工作,您就知道您已找到所选图形卡支持的最大功能级别。
    3. 可能有一种更漂亮的方法可以做到这一点,但这就是我的“问题”。显然,如果我的卡支持完整的DX11系统会更好,但是如果用户遇到类似问题,这并不是一个糟糕的保护措施。至少我可以通过编程方式识别问题。