我正在开发一个由两个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)
但他们最终都得到了相同的“程序”价值,为什么?
答案 0 :(得分:2)
两个QtOpenGL小部件中的每一个都有自己的上下文。由于程序ID在其上下文中仅是唯一的,因此在此处获取相同的ID非常好。