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

时间:2016-01-29 19:23:56

标签: qt opengl pyqt pyopengl

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

我设法解决这个问题,将第一个QGLWidget添加为"共享小部件"在创建第二个时: http://doc.qt.io/qt-4.8/qglwidget.html#QGLWidget

然而,现在看来两个QGLWidgets似乎是链接/同步的(特别是相机,但只有在切换到另一个时才能使用)。

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

编辑:我使用PyQt4

1 个答案:

答案 0 :(得分:1)

问题在于,当我从一个窗口切换到另一个窗口(我的GLWidgets在不同的窗口上)时,调用paintGL()方法,并且由于上下文是共享的,它们也共享相同的相机矩阵。因此,在每个paintGL()方法的开头,我调用我的updateCamera()方法。