Могу ли я нарисовать на окне что-то, что мне не принадлежит, используя opengl? - PullRequest
2 голосов
/ 27 сентября 2011

Я слышал, что вы можете перехватить дескриптор окна и использовать это окно как холст OpenGL. Я знаю, как подключить окна, но не могу найти, как мне рисовать в этом окне.

PS. Я использую Qt, если это поможет.

Ответы [ 2 ]

3 голосов
/ 27 сентября 2011

Контексты OpenGL могут использоваться только в одном потоке за раз и связаны с процессами.Так что это требовало создания контекста OpenGL ресурса стороннего процесса.

В Windows с использованием некоторых очень необычных хаков это было возможно, по крайней мере, в WinXP (я не знаю о Vista или 7);это обычно включает создание больших частей общей памяти процесса.

В X11 / GLX намного проще создать контекст в качестве косвенного контекста рендеринга (к сожалению, OpenGL-3 не имеет полной косвенной спецификации GLX, по некоторым неясным причинам);косвенные контексты могут быть доступны из нескольких процессов.

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

0 голосов
/ 27 сентября 2011

Qt имеет несколько NativeWindow хаков, с которыми можно немного поиграть.

В Windows вы можете использовать findWindowEx , чтобы получить HWND и опросить его геометрию, затем расположитьваше собственное окно поверх него.

Вы действительно не должны иметь возможности произвольно вмешиваться в окна другого процесса - это угроза безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...