Как наложить графику на играх Windows?

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

  1. Оверлейные программы будут влиять на производительность игры?
  2. Как будет, сцепляя выполнение влияния приложения?
  3. Есть ли какой-либо другой способ, которым можно было достигнуть этого? Например, как Вы думаете ЯЩИК ДЛЯ ПРОБНОЙ МОНЕТЫ, инструмент отладки и анализа DirectX, работа?

10
задан 2 revs 21 July 2010 в 03:26
поделиться

1 ответ

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

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

Если я правильно помню, из других обсуждений на форуме (на данный момент не могу найти ссылку.ищите такие вещи, как «как работает fraps», это популярный вопрос), Fraps перехватывает несколько вещей, чтобы заставить приложение загружать свою DLL, затем перехватывает вызовы Present () и выполняет вызов device-> Clear () перед вызовом real Present () со списком маленьких прямоугольников для установки другого цвета, который может означать отображаемое число FPS. Это оказывает минимальное влияние на производительность и широко совместимо с любым рендерингом, выполняемым приложением. Наложение растрового изображения было бы более сложным, поскольку это было бы не так просто сделать в настоящее время. Возможно, если бы вы могли подключить EndScene, тогда вы могли бы сделать больше, но вы должны быть осторожны, чтобы не изменить состояние устройства.

PIX имеет привилегированный доступ к драйверу DirectX, поэтому я не ожидал, что смогу использовать его в качестве модели для подражания.

Если целевое приложение работает в оконном режиме, подключение DirectX по-прежнему работает, но вместо этого вы также можете просто использовать GDI.

Редактировать: Я думаю это ссылка, о которой я изначально думал.

14
ответ дан 3 December 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: