使用Vulkan渲染Qml

时间:2017-01-13 15:39:32

标签: qt qml qtquick2 vulkan

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

现在,我考虑将OpenGL移植到Vulkan,我不确定是否可以对此QML层执行相同操作。

阅读Qt docs我找到了

  

QQuickWindow使用OpenGL 之上的场景图进行渲染。

您认为可以将它移植到Vulkan吗?也许压倒QQuickWindowQQuickRenderControl?我不是Qt专家,所以也许有人可以让我更好地了解这个问题。

1 个答案:

答案 0 :(得分:1)

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

  1. OpenGL 2.0
  2. OpenGL ES 2.0
  3. Direct3D 12(支持仍在试验中)
  4. OpenVG
  5. 软件渲染

但是,只有OpenGL和OpenGL ES才能完全发挥作用。例如,某些效果(如粒子)不适用于其他banckends。

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

特别是关于Vulkan,自Qt 5.10起,Qt为其添加了支持。 但是,支持仍然非常有限,并且不包括Qt Quick。

改变将在未来出现;引用Qt开发邮件列表中的email

  

针对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链接,您需要构建如果您想使用Vulkan,请从源代码获取Qt。