construct ShaderProgram class