setUniform :: (MonadIO m, Uniform a) => GLProgram -> String -> a -> m ()
setUniform (GLProgram shaderProg) name a =
  do loc <- liftIO (withCString name
                                (glGetUniformLocation shaderProg))
     glUseProgram shaderProg
     setUniformLoc loc a
setUniform :: (MonadIO m, Uniform a) => GLProgram -> String -> a -> m ()
setUniform (GLProgram shaderProg) name a =
  do loc <- liftIO (withCString name
                                (glGetUniformLocation shaderProg))
     glUseProgram shaderProg
     setUniformLoc loc a
setUniform (GLProgram shaderProg) name a =
  do loc <- liftIO (withCString name
                                (glGetUniformLocation shaderProg))
     glUseProgram shaderProg
     setUniformLoc loc a