我最近问了一个关于如何解决跨多个上下文共享顶点数组对象和帧缓冲区对象的问题,然后我确信使用多个上下文只会引起比解决方案更多的麻烦。
我正在使用 Qt,目前我的设置是我有一个不可见的 QGLWidget,然后我在可见 QGLWidget 的构造函数中使用它来共享资源,这很好接受我不能在上下文中共享某些东西。
我希望找到一个解决方案,我可以使用单个上下文来呈现我所有不同的小部件,这个问题是指使用 QGLWidget 构造函数,您可以在其中传递您希望共享的 QGLContext ,但是这似乎没有使用一个常见的上下文,而是设置一个 QGLWidget 使用的上下文,当您尝试在第二个小部件上使用它时,会调用 qWarning 通知您 QGLContext 必须引用您将其传递给的小部件。
我的应用程序的目标是拥有 2 个单独的 GUI,它们呈现不同的场景,但共享相同的上下文。目前我有一个“世界”编辑器,它可以编辑一个场景并将其保存到一个文件中以在我的游戏引擎中使用,我还有一个“材质”编辑器,它允许您以图形方式编辑类似于 UDK 材质编辑器的材质,那里是一个使用 OpenGL 的预览窗口。
理想情况下,我希望保持我目前的设计,即拥有一个可通过选项卡导航的统一游戏编辑器,而不是为编辑器的每个部分设置单独的程序。
唯一看起来像是一个不错的解决方案的是使用 QGraphicsView 并将 QGLWidget 设置为视口,但这似乎根本不起作用。我可以渲染基本的原语,但如果再多的话,它就会崩溃。
有没有人有处理多个 OpenGL 小部件的问题的经验,如果有,你能解释一下你为实现目标所采取的过程吗?