Как сделать окно win32 для текстуры opengl? - PullRequest
0 голосов
/ 28 апреля 2018

Я хочу иметь возможность визуализации элемента управления win32 внутри текстуры OpenGL. Для того, чтобы иметь возможность 3d преобразовать его. В частности, я хочу встроить Internet Explorer для показа веб-страниц и видео в трансформированном 3D-окне.

Как быстро отрисовать окно win32 на текстуру (мне нужно сохранить 60 кадров в секунду)?

1 Ответ

0 голосов
/ 28 апреля 2018

Есть несколько способов сделать это. Во всех случаях вам нужно будет извлечь контекст устройства (DC) из целевого окна (GetDC, GetDCEx).

Затем вы можете прочитать пиксели напрямую (GetPixel); или скопируйте содержимое в свой собственный DC (BitBlt) и затем получите доступ к нему (например, GetDIBits).

Поскольку вы хотите "встроить" Internet Explorer, и тем самым вы, вероятно, хотите скрыть его окно; вам нужно будет подумать, как заставить вышеуказанное работать с окнами, которые не видны, частично видны и т. д. Также следует учитывать версию Windows и / или возможность отключения DWM (и, следовательно, содержимое окна может быть недоступно). ). Взгляните на PrintWindow, чтобы вызвать WM_PAINT / WM_PRINT.

Одно небольшое руководство MSDN, которое может познакомить вас со всем этим и содержит полный пример: Захват изображения .

В любом случае, вы всегда можете выбрать альтернативное решение, встроив другой браузер / движок в качестве библиотеки (например, Chromium Embedded Framework (CEF) , Qt's WebEngine , Electron ...).

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