Производительность BitBlt с включенным Aero - PullRequest
9 голосов
/ 23 августа 2011

Я бы хотел повысить производительность BitBlt для захвата экрана. Когда Aero остается включенным, захват только области экрана размером 400x400 пикселей сокращает время захвата с моей машины в среднем с 50 мс (полный 1920x1200) до примерно 33 мс (для 400x400). Это неутешительно низкое улучшение.

Мой единственный вариант отключить Aero? Я знаю, что могу получить ослепительный быстрый захват 3 мс на весь экран, когда Aero отключен.

Ответы [ 2 ]

13 голосов
/ 23 августа 2011

Снимок экрана в режиме Aero очень дорогой, потому что он требует синхронизации с DWM (подумайте о том, чтобы подождать, пока все не моргнут глазами, чтобы сделать групповое фото), и заблокируйте весь канал GPU в Vista.В Windows 7 производительность GDI улучшена за счет ускорения общих операций GDI и уменьшения блокировки GDI )

. Есть попытки использования недокументированных функций DWM или hooks , чтобы получить общую поверхность, используемую DWM.Но вам все равно нужно заплатить цену за перемещение данных из видеопамяти в системную память через иногда медленную FSB, если вы планируете обрабатывать данные изображения (например, отправлять в сеть или сохранять в файл).

1 голос
/ 16 апреля 2012

отключить аэро сейчас, наверное.Кажется, я не могу получить действительно более 15 кадров в секунду из-за того, что он блокируется на границах 30 кадров в секунду, и я не могу «войти», чтобы получить кадр, пока не начнется следующая граница, а затем придется ждатьвсе время прошло.

...