Qt5 和 Qt Quick 2 中的自定义实时绘图

Posted

技术标签:

【中文标题】Qt5 和 Qt Quick 2 中的自定义实时绘图【英文标题】:Custom real-time drawing in Qt5 and Qt Quick 2 【发布时间】:2013-07-24 05:25:35 【问题描述】:

我一直在四处寻找,以了解如何在可能的情况下使用 OpenGL 上下文填充 QML 屏幕中的特定区域,并仅在该上下文中执行自定义 OpenGL。我看过很多演示,其中 QML 组件(如按钮等)位于屏幕范围的 OpenGL 上下文的顶部或下方(游戏通常需要),但我希望能够在其中放置几个​​不同的 OpenGL 上下文QML 并让 QML 文件定义它们的大小、位置等。

现在,由于 Qt 5 的底层都是 OpenGL,这让我想知道使用 Canvas 元素通过 javascript 进行自定义绘图是否会导致与自定义 OpenGL 相似的渲染性能?这将是一个有意义的替代方案,但我不清楚与自定义 OpenGL 绘图相比,javascript 绘图是如何通过运行时处理的。

【问题讨论】:

qt-project.org/doc/qt-5.1/qtquick/qml-qtquick2-canvas.html 我猜你读过关于 renderTarget 和 renderStrategy 的文章? @FrankOsterfeld 我的理解是,它只指定了 Qt 将如何处理底层的绘图命令,但你可以在 Canvas 中使用的 API 不是 OpenGL,还是我错了? 【参考方案1】:

你想画什么? QQuickPaintedItem 可能是最简单的方法。当您使用QOpenGLFramebufferObject 作为目标时,painter 将使用 OpenGL 来绘制纹理。如果您所做的只是 2D,这可能比编写自己的 OpenGL 代码更容易。

【讨论】:

以上是关于Qt5 和 Qt Quick 2 中的自定义实时绘图的主要内容,如果未能解决你的问题,请参考以下文章

Qt5 和 QML:如何使用 WebEngine Quick Nano Browser 自动输入用户名和密码

qt quick QML 应用程序的自定义样式页面(如 HTML 和 CSS)

QScrollArea 中的自定义小部件仅在滚动时严重重绘

如何在 windows xp 上部署 Qt 5.10 Quick 2 应用程序?

Qt 5 (Qt Quick) MenuItem 大部分时间显示为空白

组织孩子的 Qt Quick2 自定义控件