GraphicsScene 中的 Qt GLWidget 用于从图像数据(C++、Windows)中快速显示视频?

Posted

技术标签:

【中文标题】GraphicsScene 中的 Qt GLWidget 用于从图像数据(C++、Windows)中快速显示视频?【英文标题】:Qt GLWidget in GraphicsScene for fast video display from image data (C++ , Windows)? 【发布时间】:2012-09-28 09:52:16 【问题描述】:

关于在 Qt 中显示视频比将其显示为 QLabel 更有效,存在一些问题。似乎有两种方法:

直接写入窗口/小部件的图像缓冲区(但我找不到信息是否可以使用 Qt,而 MSVC / MSC 应用程序显然可以写入窗口句柄)

使用OpenGL通过硬件显示

Image scaling (KeepAspectRatioByExpanding) through OpenGL What is the most efficient way to display decoded video frames in Qt?

由于我当前的方法涉及从填充了我的图像数据的 QImage 创建的 QPixmapItem,即使在很小的分辨率(

我想继续使用 QGraphicsScene 来显示多个图像/视频,但我不知道是否可以在一个场景中显示(多个)QGLWidget - 是吗?

【问题讨论】:

QGraphicsScene 的 Qt 文档声明不支持添加 QGLWidget。 【参考方案1】:

可能不是几个 GLWidget,而是几个 GraphicsItem,调用 painter->beginNativePainting 允许发出 openGL 命令。

graphicView的viewport必须是QGLwidget,后者在构造函数中用QGLFormat(QGL::SampleBuffers)初始化。 见Qt widgets using opengl

当 OpenGL 活动项目在后台时,情况会更简单,因为调用 glClear 也会擦除视口背景,清除下方 zorder 较低的任何项目。

【讨论】:

以上是关于GraphicsScene 中的 Qt GLWidget 用于从图像数据(C++、Windows)中快速显示视频?的主要内容,如果未能解决你的问题,请参考以下文章

Qt GraphicsScene XOR Line 或 Line 在单独的层中?

PyQt 将 graphicsScene 对象分组为一个对象

Pyqt5 Graphicsscene大小和位置

Qt:选择的项目出现在 QGraphicsScene 的顶部

Qt 5.2 和 5.10 上 OpenGL 的差异

Qt--Qt中的事件处理