cyr*_*huk 4 directx screen-capture video-card dxgi
问题:当您在具有可切换显卡的计算机上使用独立显卡控制器运行应用程序时,调用IDXGIOutput1::DuplicateOutput 方法会返回 DXGI_ERROR_UNSUPPORTED。
这个答案让我们对这个问题有了一些了解。简而言之,独立显卡仅渲染屏幕的一部分,并将数据发送到集成图形控制器的帧缓冲区——换句话说,所有输出始终通过集成图形控制器。看来这就是 DuplicateOutput 返回 DXGI_ERROR_UNSUPPORTED 的原因。
我编写了一个示例,使用winapi(EnumDisplayDevices 函数)和directx(IDXGIFactory::EnumAdapters 方法和IDXGIAdapter::EnumOutputs 方法)获取所有输出及其视频适配器,以在具有可切换显卡(Intel HD 4600 和 NVIDIA 840M)的计算机上进行比较。这是结果:
不确定我的比较有多正确,但是你可以看到winapi说 DISPLAY1 属于 Intel 卡,而directx说 DISPLAY1 属于 NVIDIA 卡。一种解决方案是复制 Intel 卡的输出(因为一切都经过它),但 EnumOutputs 不返回任何输出。
目前有一个解决方法:始终使用集成图形控制器运行使用复制 API 的应用程序。
问题:如何使 DuplicateOutput 与具有可切换显卡的笔记本电脑上的独立显卡控制器配合使用?或者这是桌面复制 API 的限制?
解决了:
不幸的是,出现此问题的原因是桌面复制 API 不支持在 Microsoft 混合系统上的独立 GPU 上运行。根据设计,在这种情况下,调用会失败并同时出现错误代码 DXGI_ERROR_UNSUPPORTED。
要解决此问题,请在 Microsoft 混合系统上的集成 GPU 上运行应用程序,而不是在独立 GPU 上运行。
从这里: https: //support.microsoft.com/en-us/kb/3019314
| 归档时间: |
|
| 查看次数: |
3637 次 |
| 最近记录: |