Быстрый снимок экрана и потерянный Vsync - PullRequest
2 голосов
/ 12 мая 2010

Я хотел бы создать фильм в режиме реального времени с помощью собственного приложения, которое делает быстрые снимки экрана, при этом часть экрана занята работающим 3D-приложением.

Мне известно, что для этого уже существует несколько приложений (например, FRAPS или Taksi) и даже выделенные фильтры DirectShow (например, UScreenCapture), но мне действительно нужно сделать это с помощью моего собственного внешнего приложения.

При правильной настройке (UScreenCapture + ffdshow) захват сжатия во весь экран не потребляет столько ресурсов ЦП, сколько вы ожидаете (около 15%), и не влияет на производительность приложения 3D.

Проблема создания захвата из внешнего приложения заключается в том, что 3D-приложение теряет Vsync и создает мохнатое, сложное в использовании 3D-приложение (3D-приложение представлено только на небольшой части экрана, остальное - GDI, DirectX)

FRAPS решает эту проблему, позволяя захватывать только одно приложение за раз (одно с фокусом). В зависимости от используемой технологии (OpenGl, DirectX, GDI), он перехватывает Vsync и производит его захват (с помощью glReadPixels, ...), не нарушая его. Это не решит мою проблему, так как я хочу получить полностью составленное изображение экрана (включая 3D и все остальное) И гладкое 3D-приложение.

Кажется, UScreenCapture использует быстрый вызов DirectX для захвата всего экрана, но 3D-приложение openGL все еще не синхронизировано.

Выполнение BitBlt слишком медленное и потребляет процессор для получения в реальном времени 30 кадров в секунду (по крайней мере, в Windows XP, не уверен с 7)

Мой вопрос состоит в том, чтобы узнать, есть ли способ достичь моей цели с помощью Windows 7 и его совершенно нового механизма композитинга DirectX?

Windows 7 успешно отображает в реальном времени дублированные предварительные просмотры VSynced для каждого приложения (на панели задач), поэтому должен быть способ получить доступ к текущему отображаемому экранному буферу, не нарушая рендеринг приложения 3D OpenGL?

Любое другое предложение, технология? спасибо

1 Ответ

1 голос
/ 12 августа 2010

Я составил список возможных полезных ссылок на

http://betterlogic.com/roger/?p=3037

дайте мне знать, если у вас все получится - в конце концов мне также будет интересен быстрый снимок экрана с открытым исходным кодом для Windows ...

относящиеся: Самый быстрый способ захвата экрана

...