Доступ к каждой области рендеринга окна

Вопрос:

Каков наилучший способ получить доступ к области рендеринга каждого окна в Microsoft Windows, чтобы я мог отображать их в 3D? Я знаю, что диспетчер окон рабочего стола (dwm) дает каждому окну rendertarget и отображает их все на экране. Там есть тонны 3D-оконных менеджеров, но найти какой-то код или другую информацию сложно для меня, поэтому я прошу вас. Я хотел бы сделать это в OpenGL, но я могу представить, что это возможно в DirectX, но это тоже хорошо. Заранее спасибо!

Ответ №1

Вы должны использовать API-интерфейс операционной системы/графической системы, предназначенный для этой задачи. OpenGL работает и графическая система агностична и не имеет понятия “окна”.

В Windows API, который вы должны использовать, это API DWM. Для версий Windows, предшествующих API DWM (XP и более ранних версий), необходимо использовать некоторые “грязные” хаки для получения содержимого окон (по существу подключая сообщения WM_PAINT и WM_ERASEBACKGROUND, а функции BeginPaint и EndPaint для GDI для копирования окон ‘в DIBSECTION, который можно использовать для обновления текстуры).

В X11 API для использования – XComposite + расширение GLX_ARB_texture_from_pixmap

Оцените статью
TechArks.Ru
Добавить комментарий