【发布时间】:2017-01-13 15:39:31
【问题描述】:
我有一个使用 Open GL 进行绘图的 Qt 应用程序。在某些时候,我使用与 QQuickRenderControl 关联的 QQuickWindow 将 QML 场景绘制到纹理中,以便稍后将其组合到最终图像中。
现在,我正在考虑将 OpenGL 移植到 Vulkan,但我不确定是否可以对这个 QML 层做同样的事情。
阅读Qt docs我发现
QQuickWindow 使用场景图在 OpenGL 之上进行渲染。
您认为可以将其移植到 Vulkan 吗?也许覆盖QQuickWindow 和QQuickRenderControl?我不是 Qt 专家,所以也许有人可以让我更好地了解这个问题。
【问题讨论】:
-
从 Qt 5.7 开始,Quick 与 GL 紧密耦合。随着 Qt 5.8 的发布,这种情况很快就会改变(参见 this blog post。支持 Vulkan 可能会在不久的将来出现,但这不仅仅是覆盖两个类的问题......
-
@BaCaRoZzo,您知道将场景图移植到 Vulkan 的进展吗?另外,资源共享会起作用吗(比如非常方便的 OpenGL 实现的纹理共享)?
-
不幸的是,这是一个我不知道的细节,抱歉。 AFAIU 的第一步是将 CX12 后端从 TP 中移除,可能在 5.9 中,因为这可以极大地改善 Windows 系统上的体验。至于金属和 Vulkan,没有(公共)路线图,至少我不知道。然而,我发现了一个旧的讨论,其中明确指出它“不会匆忙”(参见here)。所以我可能对第一条评论过于乐观。我的错。
-
对于 OP,请查看 this blogpost。在这里,他们将 DX12 与当前的 OpenGL 后端集成在一起。这与您想要的方法不同,但它应该有效。
-
由于答案已经很老了..这有什么更新吗?金属支架呢?我的理解是,如果我编写一个自定义 QQuickItem,它将使用 OpenGL、WebGL 进行渲染,仅此而已?请注意跨平台恕我直言...