相关疑难解决方法(0)

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

我使用 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. 还有其他使用集成卡的解决方案吗?(不是手动解决方案)

screen-capture directx-11 video-card visual-c++ dxgi

5
推荐指数
1
解决办法
2272
查看次数

桌面复制 API 和可切换显卡

问题:当您在具有可切换显卡的计算机上使用独立显卡控制器运行应用程序时,调用IDXGIOutput1::DuplicateOutput 方法会返回 DXGI_ERROR_UNSUPPORTED。

这个答案让我们对这个问题有了一些了解。简而言之,独立显卡仅渲染屏幕的一部分,并将数据发送到集成图形控制器的帧缓冲区——换句话说,所有输出始终通过集成图形控制器。看来这就是 DuplicateOutput 返回 DXGI_ERROR_UNSUPPORTED 的原因。

我编写了一个示例,使用winapiEnumDisplayDevices 函数)和directxIDXGIFactory::EnumAdapters 方法IDXGIAdapter::EnumOutputs 方法)获取所有输出及其视频适配器,以在具有可切换显卡(Intel HD 4600 和 NVIDIA 840M)的计算机上进行比较。这是结果:

在此输入图像描述

不确定我的比较有多正确,但是你可以看到winapi说 DISPLAY1 属于 Intel 卡,而directx说 DISPLAY1 属于 NVIDIA 卡。一种解决方案是复制 Intel 卡的输出(因为一切都经过它),但 EnumOutputs 不返回任何输出。

目前有一个解决方法:始终使用集成图形控制器运行使用复制 API 的应用程序。

问题:如何使 DuplicateOutput 与具有可切换显卡的笔记本电脑上的独立显卡控制器配合使用?或者这是桌面复制 API 的限制?

directx screen-capture video-card dxgi

4
推荐指数
1
解决办法
3637
查看次数