Какой интерфейс WDDM оно использует и можно ли до него добраться с пользовательского уровня? WDDM же вроде открытый? Почему-то не могу найти то, что мне нужно. Хожу кругами по сайтам Microsoft Мне нужно только по запросу делать снимки, и курсор не нужен. Страшно подумать если система будет где-то кэшировать несколько 4К скриншотов в формате RGBA Нужно минимизировать использование CPU, GPU и памяти. Данные оконного менеджера об изменении регионов не нужны, так как мне оно надо в основном для полноэкранного видео и 3D. И формат в идеале планарный YUV, так как нужны только данные о яркости(меньше данных слать по шине). Не знаю что хуже, слать данные яркости в системную память и обрабатывать на CPU, или обрабатывать шейдером на GPU и запрашивать результат оттуда. Может я не понимаю как этот "Desktop Duplication API" работает, но он точно лишнее делает, хотя бы с курсором. Если то, что мне нужно не возможно через "Desktop Duplication API", то придется делать по отдельности для каждого вендора GPU, фактически три набора API для получения содержимого видео буфера. Сам IDXGIOutputDuplication использует эти функции GDI32.DLL: D3DKMTCreateOutputDupl D3DKMTOutputDuplGetFrameInfo D3DKMTOutputDuplGetMetaData D3DKMTOutputDuplGetPointerShapeData D3DKMTOutputDuplReleaseFrame Вообще, не похоже что это приличная замена для специализированных API, вроде NvAPI.
Vicshann, работал с DDA. Как раз та же задача, что у вас (скриншот по запросу и без курсора). Все получалось. Но это было давно, плохо помню. Да, у них там как-то скудно описано. Тоже матчасти не хватало. Мне помнится помогла вот эта статья и приложенные исходники.