【问题标题】:Multiple OpenGL Viewports with Qt 5使用 Qt 5 的多个 OpenGL 视口
【发布时间】:2013-12-29 09:25:56
【问题描述】:

我想将 3D 场景渲染到不同的视口中。这些视口包含在“子窗口”中,它们有自己的菜单,如下所示:

每个视口可以是:

  • 调整大小;
  • 隐藏;
  • 全屏显示;
  • 已移至应用程序的另一部分。

所以我们可以有类似的东西:

我认为最好将每个视口嵌入到包含我的 OpenGL 小部件的 Qt 小部件中(对吗?)。那么如何将我的 3D 场景渲染到多个 Qt OpenGL Widget 中?

【问题讨论】:

  • 我很好奇,Qt 小部件本身是否提供所有“视图”、“阴影”、“照明”选项?这个小部件的名称是什么?

标签: c++ qt opengl


【解决方案1】:

我认为最好将每个视口嵌入到包含我的 OpenGL 小部件的 Qt 小部件中(对吗?)。那么如何将我的 3D 场景渲染到多个 Qt OpenGL 小部件中?

QGlWidget's detailed description 中所述,除了重写initializeGL 和paintGL 之外,您还需要重写resizeGL 方法。在 resizeGL 方法中,需要调整视口和视锥体。

之后,只需创建小部件并将其放置在屏幕上即可。它们可以完全相互独立,您可以为每个设置不同的截锥体。

由于您想在这些小部件之间共享 opengl 上下文,请查看OpenGL context sharing。要真正做到这一点,您需要将 OpenGL 上下文对象作为第一个参数传递给QGLWidget 的构造函数。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多