使用 QtWebEngine 在屏幕外渲染网页内容

spe*_*ell 5 qt qtwebkit qt5.4 qtwebengine

我正在尝试将使用 QtWebKit 呈现 Web 内容的应用程序移植到使用 QtWebEngine 的应用程序。

我在架构上可以更改的内容有限,因此我必须坚持当前渲染页面的方法,捕获到内存缓冲区,然后将其移动到另一个进程,其中缓冲区用作 OpenGL 中的纹理。

我已经尝试通过用 WebEngine 替换 WebKit 来移植代码(从广义上讲),但是 API 是不同的。

谁能告诉我这是否可能?如果是这样,请为我指出正确的方向,以说明如何将所有内容连接起来。

小智 3

是的,API 不同,并且用于渲染的代码路径使用场景图(是的,即使对于基于小部件的 API 也是如此)。

因此,在本例中,这不是特定于 WebEngine 的问题,而是如何从 Qt Quick 场景中获取像素的问题。这就是Qt 5.4 中引入的QQuickRenderControl试图解决的问题。

在5.4中执行屏幕外操作时, QtWebEngine可能会有一些与可见性相关的额外怪癖,但希望在5.5中得到修复

这绝对是QtWebEngine示例未演示的用例,但欢迎贡献。