桌面复制API&可切换的图形

时间:2016-05-20 14:31:42

标签: directx screen-capture dxgi video-card

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

This answer阐明了这个问题。简而言之,离散图形仅呈现屏幕的一部分并将数据发送到集成图形控制器的帧缓冲区 - 换句话说,所有输出始终通过集成图形控制器。看来这就是DuplicateOutput返回DXGI_ERROR_UNSUPPORTED的原因。

我写了一个样本,使用 winapi EnumDisplayDevices function)和&amp ;;获得所有输出及其视频适配器。 directx IDXGIFactory::EnumAdapters method& IDXGIAdapter::EnumOutputs method)在具有可切换图形的计算机上进行比较(英特尔HD 4600和NVIDIA 840M)。这是结果:

enter image description here

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

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

问题:如何使DupiceOutput与具有可切换图形的笔记本电脑上的独立图形控制器配合使用?或者它是Desktop Duplication API的限制?

1 个答案:

答案 0 :(得分:4)

解决:

  

遗憾的是,出现此问题的原因是桌面复制API   不支持在Microsoft上运行独立GPU   混合系统。按照设计,调用与错误代码一起失败   在这种情况下DXGI_ERROR_UNSUPPORTED。

     

要解决此问题,请在集成GPU上运行该应用程序   而不是在Microsoft混合系统上的独立GPU上。

从这里开始:https://support.microsoft.com/en-us/kb/3019314