强制在Microsoft Hybrid系统上使用集成(Intel)图形卡

时间:2019-06-18 08:47:34

标签: visual-c++ directx-11 screen-capture dxgi video-card

我使用Microsoft桌面复制API,并且如果我的代码在集成(英特尔)图形卡上运行,那么一切正常。但是,如果我在专用卡上运行,则会出现错误。

我发现Microsoft不支持Microsoft Hybrid系统上专用卡上的这种用法:

https://support.microsoft.com/en-my/help/3019314/error-generated-when-desktop-duplication-api-capable-application-is-ru

DXGI_ERROR_UNSUPPORTED

无法解决我的需求的类似问题:

DirectX11 Desktop duplication not working with NVIDIA

Desktop Duplication API & switchable graphics

解决方法是在集成卡上启动程序。

我想通过代码解决这个问题。 我发现可以从我的代码中强制使用NVIDIA / AMD卡:

https://www.gamedev.net/forums/topic/687516-two-graphics-cards-in-one-computer-how-to-make-decision-when-createdevice/

.tparrows

1)英特尔卡有类似的选择吗?

2)还是可以从我的代码中更改NVIDIA / AMD卡设置,以便下次在Integrated GPU上运行? 我的意思是:启动我的应用程序,检查NVIDIA / AMD设置,如果不强制使用“集成显卡”(如果有),请修改此设置并重新启动我的应用程序。

3)还有其他使用集成卡的解决方案吗? (不是手动解决方案)

1 个答案:

答案 0 :(得分:1)

虽然您可以使用 NVAPI 创建应用程序配置文件并设置特定标志以使您的应用程序在集成芯片上运行,但较新版本的 Windows 可能会覆盖您的偏好。因此,最可靠/最简单的方法是使用 set a registry value 中引入的 Windows 10 build 17093

<块引用>

或者是否可以从我的代码中更改 NVIDIA / AMD 卡设置,以便下次在集成 GPU 上运行?我的意思是:启动我的应用程序,检查 NVIDIA/AMD 设置,如果它没有被强制使用集成显卡(如果可用),然后修改此设置并重新启动我的应用程序。

您可以使用注册表值执行此操作,是的。我正在实践中使用这种方法,wrote an overview 我选择如何进行 GPU 检查。我相信 Roman Ryltsov 在他的 DxgiTakeSnapshot 申请中做了类似的事情(他有很多关于这个主题的帖子值得一读)。