我想将3D场景渲染到不同的视口中。这些视口包含在“子窗口”中,它们有自己的菜单,如下所示:
每个视口都可以是:
所以我们可以这样:
我认为最好将每个视口嵌入到包含我的OpenGL小部件的Qt Widget中(是吗?)。那么如何将我的3D场景渲染成几个Qt OpenGL小部件?
答案 0 :(得分:5)
我相信最好将每个视口嵌入到包含我的OpenGL小部件的Qt Widget中(是吗?)。那么如何将我的3D场景渲染成几个Qt OpenGL小部件呢?
如QGlWidget's detailed description中所述,除了覆盖initializeGL和paintGL之外,还需要覆盖resizeGL方法。在resizeGL方法中,您需要调整视口和平截头体。
之后,只需在屏幕上创建和放置小部件即可。它们可以完全相互独立,你可以为每个人设置截头锥体。
由于您想要在这些小部件之间共享opengl上下文,请查看OpenGL context sharing。要实际执行此操作,您需要将OpenGL上下文对象作为第一个参数传递给QGLWidget的构造函数。