QGLWidget和QOpenGLWidget有什么不同?

问题描述:

我在网上阅读了一些例子,使用Qt来渲染OpenGL的东西,然后大部分使用QGLWidget。但是,当我使用Qt Designer时,我发现它在表单中添加了一个QOpenGLWidget。QGLWidget和QOpenGLWidget有什么不同?

什么优点/缺点有一个比其他?

+4

的QGL *类是非常过时,目前仅保持在大约保留旧的源代码,而QOpenGL *类是他们的工作更换,所以你应该使用后者在几乎任何情况。 对于OpenGL的模块的文件也指出这是一个警告:http://doc.qt.io/qt-5/qtopengl-index.html – Robert

最重要的一点是,QGLWidget来绘图只存在兼容性的原因较旧的代码库。正如在Qt文档QGLWidget中所建议的那样,从Qt 5.4开始,您应该改用QOpenGLWidget。

通常,新QOpenGLWidget

保留了熟悉的initializeGL/resizeGL/paintGL API,同时使在复杂的用户界面的其他部件完全的互操作性。

详述于this blog post。这包括:

  • 使用帧缓冲区对象而不是本机窗口的离屏渲染。这在移动平台上具有性能优势。
  • 实例化明确OpenGL的增强支持型材
  • 语境小部件之间共享已简化
  • 有在OpenGL的状态的设置细微的差别
  • 直接支持多重采样

简而言之:如果您有选择,请务必选择QOpenGLWidget,因为如果您不必保持向后兼容性,则几乎没有任何缺点。