我想在 GPU 上捕获和压缩屏幕。C++ AMP 和 DXGI 桌面复制各自单独工作,但似乎不能一起工作。
例子:
该项目运行良好,但在 DesktopDuplication.cpp 顶部附近添加最少的 C++ AMP 代码使其失败:
#include <amp.h>
//void f() { Concurrency::direct3d::create_accelerator_view( nullptr ); }
//void f() { Concurrency::accelerator default_acc; }
void f() { Concurrency::accelerator::get_all(); }
即使f()
从未被调用,也会m_Factory->CreateSwapChainForHwnd(...)
返回E_ACCESSDENIED
. (注释的版本f()
产生相同的结果。)
在我自己的项目中,当我尝试使用 C++ AMP 时IDXGIOutput1::DuplicateOutput()
返回。DXGI_ERROR_UNSUPPORTED
这是怎么回事?
更新:在 NVIDIA 控制面板中,将“首选图形处理器”更改为“集成图形”有效。(但是,最好使用 NVIDIA 卡。)