compileProgram returns OpenGL 中两个相同的值

compileProgram returns two identical values in OpenGL

我正在开发一个由两个 QtOpenGL 小部件组成的应用程序(都设置在两个不同的 MainWindow 中)。在我的 initializeGL() 函数中,我写了:

对于第一个 GL 小部件:

vertexShader = shaders.compileShader(vertex, GL_VERTEX_SHADER)
fragmentShader = shaders.compileShader(fragment1, GL_FRAGMENT_SHADER)
program = shaders.compileProgram(vertexShader, fragmentShader)

第二个:

vertexShader = shaders.compileShader(vertex, GL_VERTEX_SHADER)
fragmentShader = shaders.compileShader(fragment2, GL_FRAGMENT_SHADER)
program = shaders.compileProgram(vertexShader, fragmentShader)

但它们最终都具有相同的 "program" 值,为什么?

这两个 QtOpenGL 小部件中的每一个都有自己的上下文。由于程序 ID 仅在其上下文中是唯一的,因此在此处获得相同的 ID 非常好。