我希望能够在OpenGL纹理中渲染win32控件。为了能够对其进行三维变换。具体来说,我想嵌入Internet Explorer以在3D转换窗口中显示网页和视频。
如何以足够快的速度向纹理渲染win32窗口(我需要保持60 fps)?
答案 0 :(得分:5)
有几种方法可以解决它。在所有情况下,您都需要从目标窗口(GetDC
,GetDCEx
)获取设备上下文(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 WebEngine,Electron ...)来寻求替代解决方案。< / p>