gpt4 book ai didi

qt - 在 Qt 中将原始 OpenGL 渲染为 QML UI 的两种方法的比较

转载 作者:行者123 更新时间:2023-12-02 02:54:58 28 4
gpt4 key购买 nike

根据this文章中,有两种主要方法可以将原始 OpenGL 渲染到应用程序中,该应用程序的 UI 由 QtQuick 的场景图管理。简而言之,它们是(根据我的理解):

  • 在手写代码中调用原始 OpenGL 方法,这些代码通过 QtQuick 公开的一些 API 挂接到场景图的渲染循环中。
  • 将场景的原始 OpenGL 部分渲染到 QQuickFramebufferObject,该对象被视为场景图中的组件,并且其本身被渲染为纹理。

这两种方法的优点/缺点是什么?

最佳答案

QQuickWindow::beforeRendering()QQuickWindow::afterRendering() 信号的问题是,从其插槽完成的所有 OpenGL 绘制都将适本地低于或高于渲染的 Qt Quick 场景。如果这对你来说足够好 - 即。您只想绘制自定义 OpenGL 背景或某种叠加层 - 那就去做吧。

如果您需要更多,即。使用 OpenGL 渲染放置在场景图中的一些 QtQuick Item,那么您必须使用第二个选项:将 OpenGL 渲染到用作某些 QtQuick Item 上的纹理的帧缓冲区对象。正如您链接到的文档文章所述,它为您提供了更多可能性(使用多个渲染上下文甚至多个渲染线程),但也带来了性能成本。实现起来也比较麻烦。

一般来说,由于选项 1) 通常不充分,因此您被迫选择 2)。据我所知,这是在 QtQuick 场景中使用原始 OpenGL 的唯一方法。

关于qt - 在 Qt 中将原始 OpenGL 渲染为 QML UI 的两种方法的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27948211/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com