Im interested in knowing more on how to use this approach
should I add the corresponding "Select" value to my buffer object then? can you give any more guidance on how should I implement this at the code level?
It's actually not really that useful, at least not with the Select being a uniform. If you have to issue multiple draw calls (which you do, for setting the uniform), then you could just as well sort by texture and switch a standard sampler2D uniform. My snippet is much more useful if you have to switch textures per pixel or per-primitive. The Select variable would then be either calculated in the pixel shader or supplied as a varying through vertex attributes. The latter method allows the drawing of a mesh with many different textures using only a single draw call. It doesn't have to be faster though, since although you gain on draw call overhead, you can easily thrash the GPU texture caches, unless you presort the mesh faces per material.