With separate shader program, one can't query anymore current program
with glGetIntegerv(GL_CURRENT_PROGRAM, &program), so glUniform* fails to
store the correct location during retracing.
Technically glActiveShaderProgram must be used to set the active program
for Uniform. But on my system (AMD) it works without it, I don't know if
it is valid or not.
This change uses the active shader (would be 0 if the users don't call
glActiveShaderProgram) instead of current program (0 in pipeline mode)
Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>