如何将win32窗口渲染为opengl纹理?

时间:2018-04-28 07:42:05

标签: c++ winapi opengl

我希望能够在OpenGL纹理中渲染win32控件。为了能够对其进行三维变换。具体来说,我想嵌入Internet Explorer以在3D转换窗口中显示网页和视频。

如何以足够快的速度向纹理渲染win32窗口(我需要保持60 fps)?

1 个答案:

答案 0 :(得分:5)

有几种方法可以解决它。在所有情况下,您都需要从目标窗口(GetDCGetDCEx)获取设备上下文(DC)。

然后,您可以直接读取像素(GetPixel);或将内容blit到您自己的DC(BitBlt)然后访问它(例如GetDIBits)。

因为你想“嵌入”Internet Explorer,所以你可能意味着隐藏它的窗口;您将需要考虑如何在不可见,部分可见的窗口上进行上述工作。考虑您的Windows版本和/或是否可能禁用DWM(因此窗口的内容可能不可用) )。请查看PrintWindow以强制WM_PAINT / WM_PRINT

一个可以向您介绍所有这些内容并提供完整示例的小型MSDN指南是:Capturing an Image

在任何情况下,您都可以通过将其他浏览器/引擎嵌入库(例如Chromium Embedded Framework (CEF)Qt's WebEngineElectron ...)来寻求替代解决方案。< / p>