在我的应用程序中,我尝试实现多个视口,以允许用户从多个视角查看场景。我的每个视口都需要能够在线框,阴影,灯光等之间切换。我当前可以在每个视口中从不同的角度进行渲染,但是我有问题。
当我尝试在任何视口中设置各种设置,例如 glPolygonMode()或 qglClearColor()时,这些设置仅似乎适用于单一视口 ,通常是最后创建的视口。这个不是信号/插槽问题,因为这些连接是在每个小部件内部处理的,并且不能在小部件之间混淆。
由于我使用Qt作为管理所有UI相关事物的库,我确信Qt已经为我创建和设置每个OpenGL实例做了很多事情,所以可能有些事我忽略了我不知道的事情。
我检查了可用于QGLWidgets的构造函数,并发现QGLWidget可以将另一个QGLWidget作为" sharedwidget"以及QGLContext对象。
ASSERT:" QOpenGLFunctions :: isInitialized(d_ptr)"在文件中 C:\工作\编译\ qt5_workdir \ W \ S \ qtbase \包括\ qtgui ../../的src / GUI /的OpenGL / qopenglfunctions.h, 2018年线
目前,我的应用程序采用以下层次结构:
每个QGLWidget唯一需要共享的是指向当前" map"的指针,以便每个人都可以根据在特定小部件实例中设置的任何设置来渲染地图。 / p>
我执行以下功能来设置视口:
ASSERT:" false"在文件qgl.cpp中,第122行
甚至可以将单独的QGLWidgets与不同的" polygonMode"'或" clearColor"' s?我只是担心我做错了什么会让我在以后的屁股上咬我,这是我想要避免的。