QGLWidget 在 QT 中是如何工作的?

Posted

技术标签:

【中文标题】QGLWidget 在 QT 中是如何工作的?【英文标题】:How does QGLWidget work in QT? 【发布时间】:2011-07-07 17:27:30 【问题描述】:

令人惊讶的是,我将 QWidget 切换为 QGLWidget,现在我的 QPainter::drawImage 调用速度提高了 5 倍。除了小部件类型之外,我没有改变其他任何东西。这如何使 QPainter 调用性能更好?我很高兴它有效,但我只是不明白如何。有什么想法吗?

谢谢。

【问题讨论】:

【参考方案1】:

QGLWidget 使用您系统上可用的 OpenGL 实现,它可能是硬件加速的。这取决于您的系统。 Qt 小部件可以使用不同的 QPaintEngine 渲染。 您甚至可以通过尝试运行带有参数 -graphicssystem 的应用程序来尝试将整个图形系统更改为使用 OpenGL。目前在 Qt for Linux Embedded 中无法做到这一点。例如,您可以尝试运行动画拼贴示例的不同之处。 请注意,这并不一定意味着性能会比光栅画家更好。这取决于系统的OpenGL实现,如果只是软件,性能可能会更差。

【讨论】:

但我仍然使用 qpainter 对象。我没有改变。我猜 glwidget 的控制比显而易见的要多。 抱歉,我为班级使用了不正确的名称。我编辑了答案。类是一样的,你总是使用QPainter,但它可以在它下面使用不同的QPaintEngine。使用 QGLWidget,QPainter 使用的默认引擎不再是 QRasterPaintEngine,而是 QOpenGLPaintEngine(如果我没记错的话)。这很清楚:doc.qt.nokia.com/latest/qpaintengine.html#details. 您好,这可能是一个愚蠢的问题,但是您所说的“硬件加速”到底是什么意思?你的意思是它使用更多的 CPU,还是它使用你的显卡?【参考方案2】:

它使用 OpenGL 来渲染其内容。

【讨论】:

【参考方案3】:

如果它使用的是 OpenGL,它可能也在使用硬件加速

【讨论】:

以上是关于QGLWidget 在 QT 中是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 qGLWidget 在 Visual Studio 中显示

如何在qt中执行opengl

拉伸因子在 Qt 中是如何工作的?

如何将 QMainWindow 调整大小事件传递给 QMainWindow 中包含的 QGLWidget?

qt示波器示例采样线程类在项目中是如何工作的?

Qt连接QTableWidget和QGLWidget