使用Vulkan渲染Qml

gab*_*ero 9 qt qml qtquick2 vulkan

我有一个使用Open GL绘制的Qt应用程序。在某些时候,我正在使用与QQuickWindow关联的QQuickRenderControl方法将QML场景绘制到纹理中,以便稍后在最终图像中进行合成。

现在,我正在考虑将OpenGL移植到Vulkan,但不确定在此QML层是否可以这样做。

阅读Qt文档,我发现

QQuickWindow使用OpenGL顶部的场景图进行渲染。

您认为可以将其移植到Vulkan吗?也许是压倒一切的QQuickWindowQQuickRenderControl?我不是Qt专家,所以也许有人可以让我对问题有更好的了解。

Ben*_*n T 3

截至 2019 年 6 月和 Qt 5.13,Qt Quick 2 支持以下后端:

  1. OpenGL 2.0
  2. OpenGL ES 2.0
  3. Direct3D 12(支持仍处于实验阶段)
  4. 开放VG
  5. 软件渲染

但是,只有 OpenGL 和 OpenGL ES 功能齐全。例如,某些效果(如粒子)不适用于其他后端。

有关如何选择后端以及每个后端的限制的更多信息,我建议阅读文档: https: //doc.qt.io/qt-5/qtquick-visualcanvas-adaptations.html

具体到 Vulkan,Qt 从Qt 5.10开始增加了对它的支持。然而,支持仍然非常有限,不包括 Qt Quick。

未来将会有改变;引用 Qt 开发邮件列表中的一封电子邮件

适用于 Vulkan、Metal 和 D3D11 的 Qt Quick 的早期预览可能已在 Qt 5.14 中提供,然后在 5.15 及更高版本中发展,最终目标是 6.0。

因此,当 Qt 6 发布时,使用 Vulkan 渲染 Qt Quick 应该是可能的。Qt 6 的计划发布日期目前是2020 年 11 月。同时,技术预览版可能会从 Qt 5.14 开始提供。

我对 Qt 6 之前的任何事情都不会太乐观,因为(1)它只是技术预览,(2)据我所知,当前的官方 Qt 二进制文件根本不与 Vulkan 链接,您需要从源代码构建 Qt如果你想使用 Vulkan。