Как OBS различает что-то как стороннее наложение?

#c #opengl #directx #obs

Вопрос:

У OBS есть возможность не показывать сторонние наложения (например, наложение steam) при использовании метода захвата игры, и я бы очень хотел, чтобы части моего приложения аналогичным образом не отображались при потоковой передаче.

Какие вещи я должен искать в Google, чтобы получить лучшее представление о том, как OBS может определить, что является наложением, а что нет?

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

1. Вам не нужно ничего гуглить, это с открытым исходным кодом: github.com/obsproject/obs-studio

2. Первоначально мой вопрос указывал, что я просмотрел исходный код, но, поскольку я совершенно новичок в C и создании скомпилированных приложений в целом, я очень мало представлял, на что именно я смотрел. К счастью, кто-то щедро отредактировал эту часть / части

Ответ №1:

Похоже, что этот параметр конфигурации передается по каналу в capture_overlay переменную, которая используется для задержки захвата OBS до конца замены, после того, как любые сторонние наложения сделали свое дело:

 static inline void gl_swap_begin(HDC hdc)
{
    const bool first = swap_recurse == 0;
      swap_recurse;

    if (first amp;amp; !global_hook_info->capture_overlay)
        gl_capture(hdc);
}

static inline void gl_swap_end(HDC hdc)
{
    --swap_recurse;
    const bool first = swap_recurse == 0;

    if (first amp;amp; global_hook_info->capture_overlay)
        gl_capture(hdc);
}
 

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

1. Извините, в моем первоначальном комментарии говорилось, что я уже просмотрел исходный код, но я не знаю C и вообще не знаком со скомпилированными приложениями, но кто-то удалил это из моего вопроса. Моя проблема в том, что я не знаю, чего я не знаю. Что такое замена? Что такое «их вещь», которую делают сторонние наложения?