Я использую Desktop Duplication для копирования содержимого экрана в растровое изображение в памяти. Я получаю текстуру рабочего стола, а затем создаю промежуточную текстуру, используйте CopyResource
, чтобы скопировать рабочую текстуру в промежуточную текстуру, наконец, позвонить ID3D11DeviceContext::Map
, чтобы получить доступ к промежуточным фрагментам текстуры и скопировать их. Практически таким же способом, как описано здесь: https://stackoverflow.com/a/27283837/825318ID3D11DeviceContext :: Map slow performance
Проблема заключается в том, что Map
вызов занимает много времени - для больших разрешений экрана, такие как 4K это может занять до 100 мс на один вызов, который является неприемлемо высоким, как мне нужно для обеспечения скорости 30 кадров в секунду.
Есть ли способ быстрее получить содержимое текстуры? Если нет, есть ли способ предоставить свой собственный указатель адресного картографирования, чтобы система копировала данные текстуры там? Спасибо
Документация [ID3D11DeviceContext :: Map] (https://msdn.microsoft.com/en-us/library/windows/desktop/ff476457 (v = vs.85) .aspx) говорит о снижении производительности и предлагает соответствующие стратегии и конец страницы. Один из них - использовать volatile pointer. –
Спасибо, однако это относится только к поверхностям только для записи, в то время как моя задача - считывать данные с поверхности. – Isso