我应该如何处理两个只共享相同着色器的 QGLWidgets?

How should I handle two QGLWidgets which only share the same shaders?

我刚刚向我的应用程序添加了第二个 QGLWidget(两个 QGLWidget 都继承自同一个 class)。虽然第一个仍然按预期工作,但第二个在我的 paintGL() 方法的 glDrawArrays() 方法中引发了一个 GL_OUT_OF_MEMORY,无论填充缓冲区的数据是什么

我在创建第二个 QGLWidget 时将第一个 QGLWidget 添加为 "share widget" 设法解决了这个问题: http://doc.qt.io/qt-4.8/qglwidget.html#QGLWidget

然而,现在看来,这两个QGLWidgets linked/synchronized(尤其是相机,但只有在切换到另一个小部件时)。

我的问题因此更笼统,因为我想知道我应该如何处理我的两个 QGLWidgets,以避免冲突,知道它们只共享相同的着色器代码(顶点和片段)但没有数据(它们不write/read 相同的缓冲区)。

编辑:我使用 PyQt4

问题在于,当我从一个 window 切换到另一个(我的 GLWidgets 在不同的 windows 上)时,调用了 paintGL() 方法,因为上下文是共享,他们也共享相同的相机矩阵。因此,在每个 paintGL() 方法的开始,我调用我的 updateCamera() 方法。