【问题标题】:How do I render a win32 window to an opengl texture?如何将 win32 窗口渲染为 opengl 纹理?
【发布时间】:2018-10-08 23:48:32
【问题描述】:

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

如何以足够快的方式将 win32 窗口渲染到纹理(我需要保持 60 fps)?

【问题讨论】:

    标签: c++ winapi opengl


    【解决方案1】:

    有几种方法可以解决。在所有情况下,您都需要从目标窗口(@98​​7654321@、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 WebEngineElectron...)来寻求替代解决方案。

    【讨论】:

    • PrintWindow 是缺失的部分。我更喜欢已经在 Windows 10 中运行的资源管理器。除非绝对必要,否则我想避免添加另一个 800 磅的大猩猩。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2013-12-27
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    相关资源
    最近更新 更多