SDK для внутриигровых оверлеев

В той небольшой информации, которую мне удалось найти при разработке внутриигровых оверлеев (аналогичных тому, что делает Steam), упоминается необходимость перехватывать вызовы функции замены кадров графического API и подключать к ней мою собственную процедуру рисования.

Похоже, это то, что делает Mumble (игровой VoIP). Поскольку я никогда не делал ничего, связанного с подключением, и поскольку у меня нет большого опыта работы с DirectX, мне интересно, есть ли какой-то SDK или даже более читаемый пример, чем Mumble, который также реализует ввод, это демонстрирует, как реализовать интерактивный внутриигровой оверлей. Mumble - это здорово, но я, кажется, не могу осмыслить его, особенно вокруг более интересных вещей, которые он делает, чтобы правильно зацепить свой материал.

Кроме того, если у вас есть более подробная информация о том, как это сделать на Mac и Linux ... :-)


person Ivan Vučica    schedule 07.09.2010    source источник


Ответы (2)


Возможно, GLIntercept может вдохновить вас. Он предоставляет файл openGL.dll, который вы помещаете в папку своего приложения. Windows загружает эту dll вместо system32 из-за правил приоритета. GLIntercept перенаправляет все вызовы dll system32, но при этом регистрирует их все. Итак, вы можете реализовать свой собственный glSwapBuffers (), который отображает еще несколько вещей, а затем перенаправляет вызов.

Также доступен исходный код.

Я поддерживаю ваш вопрос, и меня интересуют ваши будущие открытия ... не стесняйтесь делать репост, когда у вас будет больше информации :)

person Calvin1602    schedule 09.09.2010
comment
Спасибо :-) К сожалению, GLintercept (и эквивалентные методы для DX), как вы их описываете, не то, что я ищу; Я хотел бы добавить эти функции в любую запускаемую игру. Тем не менее, похоже, что этот связанный вопрос (как предлагает StackOverflow): stackoverflow.com/questions/1994676/, похоже, содержит ответ. - person Ivan Vučica; 12.09.2010

  • Начните с разработки вашего оверлея, не перехватывая графический API. Имейте в виду, что ключевой ввод должен использовать глобальные перехватчики.
  • Интегрируйте его в приложение с помощью dll-перехватчика Direct3D. Погуглите, чтобы получить базовый код.

Изменить:

person tibur    schedule 07.09.2010
comment
Хотите поделиться конкретной ссылкой? DLL-перехватчик Direct3D не дает никаких разумных результатов через Google. - person Ivan Vučica; 08.09.2010
comment
Библиотеки DLL прокси / перехватчика, помещенные в папку приложения, не являются тем, что я ищу, так как я хотел бы иметь возможность влиять на любую игру, запущенную на машине. Похоже, этот вопрос может содержать ответ, который я ищу: stackoverflow.com/questions/1994676/ - person Ivan Vučica; 12.09.2010