【发布时间】:2016-07-05 13:29:02
【问题描述】:
从 Qt 5.4 版本开始,引入了 QOpenGLWidget 来启用 OpenGL 渲染功能。
除了调用OpenGL API,QOpenGLWidget还可以作为一个普通的QWidget使用,其中使用了QPainter。
所以我想知道,如果我不打算直接调用任何 OpenGL API 来渲染我的小部件,而只调用 QPainter API,那么使用 QOpenGLWidget 而不是 QWidget 是否还有任何(可能是性能)优势?
【问题讨论】:
-
它可能有好处(我还没有看到使用“休闲”QPainter 并使用 OpenGL API 使用
QGLWidget的高性能;但谁知道呢?)。但是,当您弄乱平台+硬件+驱动程序特定的事情时,您应该三思而后行。因为您的小部件在每台机器上的显示可能不同,它可能更快或更慢,具有旧驱动程序的旧机器可能会拒绝新的 OpenGL 功能,OpenGL 可能需要额外设置网络显示等。 -
所以实际上没有足够的动机使用 QOpenGLWidget,除非需要密集的 OpenGL 调用,对吧?
-
QOpenGLWidget的目的是在您的窗口内有一个矩形区域来渲染 OpenGL 场景。QOpenGLWidget只带来了开销,因为它需要是一个特定的带有窗口ID的资源,所以3D驱动和OS可以直接使用。 -
@Wayee 我看不出动机。也许有人会,不知道。但对我来说@Velkan 是对的,基本上
QOpenGLWidget是一个使用和显示OpenGL 场景的窗口。