OBS перехватывает Present и берёт BackBuffer из основного SwapChain игры. Интернет знает много способов это обойти.
Самый простой - создать собственное окно-оверлей и присвоить ему флаг исключения из захвата:
C++:
Код:
SetWindowDisplayAffinity
(
hWnd
,
WDA_EXCLUDEFROMCAPTURE
)
;
Это будет работать со всеми утилитами захвата, потому что делается на уровне DWM
(на этом же уровне происходит захват всего экрана подобными утилитами захвата).
Если тебя это не устраивает, то возможно для DirectX 9 сработает ранний перехват.
Логика простая - ставишь хук на Present раньше OBS, и он получает кадр без твоей графики,
потому что твой хук по цепочке вызовется позже. Основная идея в том, что OBS грабит кадр в хуке и нужно чтобы твои штучки рисовались после выполнения его хука. Это будет работать только при захвате игры.
Ни один из этих способов не будет работать с Nvidia App / GeForce Experience.