void SetTextureUnits(const std::vector<GLuint> &args)
 {
     assert(args.size() == sizeof...(tp) && "Too much texture unit provided");
     if (getGLSLVersion() >= 330)
     {
         for (unsigned i = 0; i < args.size(); i++)
         {
             setTextureSampler(TextureType[i], TextureUnits[i], args[i], SamplersId[i]);
         }
     }
     else
         BindTexture<tp...>::exec(TextureUnits, args, 0);
 }
 void SetTextureUnits_impl(GLuint texid, TexIds... args)
 {
     setTextureSampler(TextureType[N], TextureUnits[N], texid, SamplersId[N]);
     SetTextureUnits_impl<N + 1>(args...);
 }