QGLWidget和QOpenGLWidget之间有什么区别?

6

我在网上阅读了一些使用Qt和OpenGL渲染的示例,大多数都使用QGLWidget。然而,当我使用Qt Designer时,我注意到它会向表单中添加一个QOpenGLWidget。

它们之间有什么优缺点呢?


4
QGL类已经过时,目前只为保持旧源代码的运行而存在,而QOpenGL类则是其替代品,因此在几乎所有情况下都应该使用后者。OpenGL模块的文档也以警告的方式说明了这一点:http://doc.qt.io/qt-5/qtopengl-index.html - Robert
1个回答

8
最重要的一点是,QGLWidget仅出于向旧代码库兼容的原因而存在。建议在Qt文档中关于QGLWidget中提到,从Qt 5.4开始,应改用QOpenGLWidget。

通常,新的QOpenGLWidget

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

此博客文章所详述。 这包括:

  • 使用帧缓冲对象而不是本机窗口进行离屏渲染。这在移动平台上具有性能优势。
  • 增强支持实例化显式OpenGL配置文件
  • 窗口小部件之间的上下文共享已简化
  • OpenGL状态设置方面存在微妙差异
  • 直接支持多重采样

简而言之:如果可以选择,始终选择QOpenGLWidget,如果您不必维护向后兼容性,则几乎没有任何缺点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接