Мое приложение захватывает экран рабочего стола (общий доступ к экрану) и отправляет на другое устройство.
В настоящее время приложение захватывает экран следующим методом
— используя GDI (Bitblt)
— используя DirectX (getFrontBufferData)
— используя DXGI (API дублирования рабочего стола)
в зависимости от версии Windows и варианта использования, приложение использует один из них.
Я смотрю API с аппаратным ускорением, которые делают эту работу быстрее, чем существующая реализация. В качестве ссылки у нас есть что-то в Mac OS кликните сюда.
После некоторого поиска аппаратного ускорения захвата экрана в Windows, некоторые из следующих опций:
— Захват на основе GDI
— Это широко используемая библиотека захвата программного обеспечения, она поддерживает аппаратное ускорение в Windows 7.
— Захват на основе Directx
— некоторые из опций предлагают захват на основе direct3d9 и direct3d11, упомянутый в ссылках ниже. Использование getfrontbufferData в методе directx медленнее, чем сам gdi.
— Захват на основе DXGI
— он поддерживает Windows 8 и более позднюю версию Windows, это базовая реализация Direct3D11 в моем приложении.
— Windows Media Encoder 9 на основе захвата
Рекомендации: http://www.codeproject.com/Articles/5051/Various-methods-for-capturing-the-screen а также
Самый быстрый способ захвата экрана
Но эти ссылки кажутся очень старыми, есть ли такая функциональность в последней версии Windows.
Первые три метода уже используются в моем приложении.
DXGI лучше в некотором смысле, так как имеет аппаратное ускорение (использует GPU).
Я ищу приложение / библиотеку Windows, которые работают аналогично приложению Mac, упомянутому в верхней части.
Наш сценарий использования прост в том, чтобы захватывать кадры экрана наилучшим образом, не влияя на производительность системы (я надеюсь, что это возможно только с использованием графического процессора, который сэкономит циклы процессора).
Задача ещё не решена.
Других решений пока нет …