c++ - 如何快速重绘QQuickItem?

标签 c++ qt qtquick2 frame-rate

我有一个 YUY2 格式的图像流。我想在 QQuickItem 上绘制这些图像 - 这样我就可以将它与 Qt Quick 2 一起使用。

我遇到了性能问题,所以我的问题是重绘用 C++ 编写的 QML 对象的最快方法是什么?是否有某种专门用于渲染视频的对象?


我尝试过创建一个继承QQuickPaintedItem 的类。我已经将 YUY2 图像转换为 RGBA8888 格式,然后使用 QImage 加载它,然后使用 QPainter 绘制它。如果 QQuickPaintedItem 很大——例如大于 1000x1000,则证明效率不高。更快的方法是将 QImage 转换为 QPixmap,然后使用 QPainter 进行绘制。现在效果不错,但也许有更快的方法?例如,图像的转换过程似乎太慢了。

最佳答案

我已经通过使用 QQuickItem 让它工作了定义 updatePaintNode功能(第一个想法来自 Kuba Ober's 评论)。

This example帮了我很多。其中 NoisyNode 类渲染背景(静态图像),Graph 正在使用它。我已经将这两个类(class)带到了我的项目中,并根据我的需要进行了调整。我在显示 1080x1920 像素、30fps 时没有问题。据我了解,要显示视频,您最终需要将 YUV 转换为 RGB,因此我立即执行了此操作并使用了 RGBA 像素数组。

关于c++ - 如何快速重绘QQuickItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40995664/

相关文章:

c++ - 如何检查 QImage::save() 是否已完成写入磁盘?

c++ - QML 中的两种方式绑定(bind) C++ 模型

c++ - 如何使用密码从 Qt 访问 Sqlite 数据库?

c++ - boost 异步TCP服务器写入错误

c++ - Atmel Studio 中的 Arduino 产量

c++ - Qt 5.3.1 - 静态构建导致链接器错误

c++ - 使用元数据类型中继信号/槽

date - 如何从 QML 日历返回的日期中提取日、月和年?

qt - 如何制作跟踪/控制任何 bool 属性的 QML 切换按钮

c++ - MSBuild.exe 不并行构建项目