Вопрос Present hook работает, но изображение застывает. (FIXED)

how to доказать всем что не еблан
Пользователь
Статус
Оффлайн
Регистрация
14 Авг 2019
Сообщения
386
Реакции[?]
108
Поинты[?]
17K
получаю swap_chain из renderdevice + 0x178
66 0F 7F 05 ? ? ? ? 66 0F 7F 0D ? ? ? ? 48 89 35

хукаю с помощью своей обертки над polyhook 2, но пробовал и MinHook

long __stdcall present_hooked(IDXGISwapChain* swap_chain, unsigned int sync_interval, unsigned int flags) noexcept

MinHook:
swap_chain->init(g_interfaces->swap_chain);
swap_chain->hookAt(8, present_hooked);
swap_chain->hookAt(13, resize_buffers_hooked);

MH_EnableHook(MH_ALL_HOOKS);
....
// вызов оригинала
return g_hooks->swap_chain->CallOriginal<long, 8>(swap_chain, sync_interval, flags);

polyhook v2:
present->init_and_hook(g_interfaces->swap_chain, 8, present_hooked);
resize_buffers->init_and_hook(g_interfaces->swap_chain, 13, resize_buffers_hooked);
...
// вызов оригинала
return g_hooks->present->call_original(swap_chain, sync_interval, flags);
обе вариации работают, моя функция вызывает оригинал и изображение игры замирает, но звуки меню и тд есть
в это время функция present_hooked всё вызывается и вызывается.

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

есть идеи?
 
Начинающий
Статус
Оффлайн
Регистрация
31 Окт 2023
Сообщения
69
Реакции[?]
28
Поинты[?]
27K
ресайз буфферс вызывается только при смене разрешения.

а для нормальной подсказки приложи куски кода по больше
 
how to доказать всем что не еблан
Пользователь
Статус
Оффлайн
Регистрация
14 Авг 2019
Сообщения
386
Реакции[?]
108
Поинты[?]
17K
Keep Ev0lving, Stay Fatal
Эксперт
Статус
Оффлайн
Регистрация
6 Фев 2018
Сообщения
1,550
Реакции[?]
585
Поинты[?]
101K
how to доказать всем что не еблан
Пользователь
Статус
Оффлайн
Регистрация
14 Авг 2019
Сообщения
386
Реакции[?]
108
Поинты[?]
17K
Советую написать решение своей проблемы, если ты зафиксил.
Мало ли у кого-то такая же проблема будет.
у меня проблема была не с самим презентом, а в некорректном использовании polyhook.
так что вряд ли такое случится у кого либо, ибо я вообще 0 инфы в инете нашел
 
Сверху Снизу