强制在 Microsoft 混合系统上使用集成(Intel)显卡

Ger*_*rgo 5 screen-capture directx-11 video-card visual-c++ dxgi

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

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

DXGI_ERROR_UNSUPPORTED
Run Code Online (Sandbox Code Playgroud)

类似的问题没有解决我的需求:

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

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

DXGI_ERROR_UNSUPPORTED
Run Code Online (Sandbox Code Playgroud)
  1. Intel 卡有类似的选项吗?
  2. 或者是否可以从我的代码中更改 NVIDIA / AMD 卡设置,以便下次在集成 GPU 上运行?我的意思是:启动我的应用程序,检查 NVIDIA / AMD 设置,如果不强制使用集成显卡(如果可用),则修改此设置并重新启动我的应用程序。
  3. 还有其他使用集成卡的解决方案吗?(不是手动解决方案)

小智 2

尽管您可以使用 NVAPI 创建应用程序配置文件并设置特定标志以使您的应用程序在集成芯片上运行,但较新版本的 Windows 可能会覆盖您的首选项。因此,最可靠/最简单的方法是设置Windows 10 build 17093中引入的注册表值

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

您可以使用注册表值来做到这一点,是的。我在实践中使用了这种方法,并概述了我如何选择进行 GPU 检查。我相信 Roman Ryltsov 在他的DxgiTakeSnapshot应用程序中做了类似的事情(他有很多关于这个主题的帖子值得阅读)。