使用两个不同的着色器时出现问题

我创建了一个简单的着色器来在OpenGL中绘制场景。 当另一个着色器被引入时,出现了一个问题。

我使用第一个着色器,并在场景中绘制几个对象。 然后我使用第二个着色器并绘制其他的东西。 每个绘图调用在绘图开始之前都有glUseProgram() 。 问题是我用第一个着色器绘制的所有对象都消失了,但是如果在第二个绘制完成后glUseProgram(firstShader)调用glUseProgram(firstShader) ,那么一切都很好。 即使我在绘图开始之前调用glUseProgram(firstShader)我也无法弄清楚为什么会发生这种情况。

有什么我失踪OpenGL绘图过程? OpenGL实际上是否可以使用第二个着色器绘制所有的东西?

我的程序的大多数简化版本看起来像这样:

 glClear(...); glUseProgam(simpleStandardShader); // just transforming vertices and doing some directional lighting and texturing foreach (GameObject) glDrawArray(...); // draw all 3D objects glUseProgram(spriteShader); // transforming quads in screen space and texturing foreach(Sprite) glDrawArray(...); // draw all quads glSwapBuffers(); // i hope i wrote it right, don't remember exact name