Я хочу захватить и сжать экран на GPU. C++ AMP и DXGI Desktop Duplication работают по отдельности, но, похоже, не работают вместе.
Пример:
Этот проект отлично работает, но добавление минимального кода C++ AMP почти верхняя часть DesktopDupplication.cpp приводит к сбою:
#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()
дают тот же результат.)
В моем собственном проекте IDXGIOutput1::DuplicateOutput()
возвращает DXGI_ERROR_UNSUPPORTED
, когда я пытаюсь использовать C++ AMP.
В чем дело?
Обновление: в панели управления NVIDIA изменение «Предпочитаемого графического процессора» на «Встроенная графика» работает. (Но использование карты NVIDIA намного предпочтительнее.)