getError takes too much bandwidth to be always there
save a gl call to get uniform location