The OpenGL docs for glUseProgram claim that calling it with an argument of zero will cause the results of shader execution to be undefined
.
However
Once you are using glUseProgram(myShader)
all subsequent rendering will be done using the shader ID myShader
.
If you are calling this each time you have a material change in a modern openGL 3.1+
, there is little use of glUseProgram(0)
.
However, if you are planning to integrate some fixed-function rendering in there, like glVertex3f(..)
, then glUseProgram(0)
will make sure that the last used shader is not active anymore, and it will use the fixed-function pipeline, like glColor3f(...)