Qt 5的多个OpenGL视口

时间:2013-12-11 12:00:28

标签: c++ qt opengl

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

每个视口都可以是:

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

所以我们可以这样: enter image description here

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

1 个答案:

答案 0 :(得分:5)

  

我相信最好将每个视口嵌入到包含我的OpenGL小部件的Qt Widget中(是吗?)。那么如何将我的3D场景渲染成几个Qt OpenGL小部件呢?

QGlWidget's detailed description中所述,除了覆盖initializeGL和paintGL之外,还需要覆盖resizeGL方法。在resizeGL方法中,您需要调整视口和平截头体。

之后,只需在屏幕上创建和放置小部件即可。它们可以完全相互独立,你可以为每个人设置截头锥体。

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