C # Прямой захват 3D-экрана

#c# #direct3d #gif #screen-capture

#c# #direct3d #gif #захват экрана

Вопрос:

Я некоторое время возился с захватом экрана, и мне удалось захватить весь экран, определенные области на экране и т.д…

Но когда я захожу в игру и пытаюсь захватить экран, она полностью игнорирует игру и вместо этого захватывает рабочий стол (или что-то еще за окном игры). Другим интересным фактом является то, что то же самое происходит с кнопкой PrtScn.

Есть идеи о том, как захватить экран игры?

Ответ №1:

Используемый вами метод захвата экрана хорошо подходит для захвата объектов, которые не имеют аппаратного ускорения. Я подозреваю, что у вас возникнет такая же проблема при попытке захватить кадр фильма в проигрывателе Windows Media.

Решение заключается в выполнении захвата экрана с самого оборудования с использованием DirectX. В этой статье объясняется, как это сделать с помощью некоторого кода и управляемой оболочки DirectX под названием SlimDX.

РЕДАКТИРОВАТЬ Если Slim DX у вас не работает, то вам просто нужно будет найти другую управляемую оболочку для Direct X. Я не думаю, что вы сможете выполнить захват экрана, не работая на аппаратном уровне, а DirectX является средством для этого на платформе Windows.

Комментарии:

1. Для этого требуется SlimDX, что не очень хорошо, потому что вам пришлось бы устанавливать его везде, куда бы вы ни отправились.

2. @Или Betsalel Вам не обязательно использовать программу установки. Вы также можете распространять двоичные файлы SlimDX вместе со своим приложением. Единственная причина, по которой у SlimDX есть установщик, — это также установка среды выполнения DirectX от Microsoft.

3. Вы имеете в виду просто распространять папку Bin? нет необходимости в установке?

4. Хорошо, но этот пример, похоже, не работает, у вас есть какие-либо другие примеры или образец (допустимый) с исходным кодом? * Это работает на настольных компьютерах и других окнах, но не в играх.

5. Или Betzalel — Нет, я не эксперт в этом вопросе, но немного времени, потраченного на поиск в Google, дало множество результатов.