If I imagine that the GL_TEXTURE_2D is a picture’s frame hangging on the wall and textureId is the real picture,
Actually a very good analogy 🙂
so, what GL_TEXTURE0 and glActiveTexture are?
Think about a wall with multiple picture frames, the first frame being labeled GL_TEXTURE0, the second GL_TEXTURE1 and so on.