That Q2 example is just uploading new texture data, not creating a new texture every frame. A small nitpick, I guess, but there’s often (usually?) an optimized path for replacing the contents of an existing texture, especially if that texture was created with a flag that it’s going to be changed often.
edit: in any case, if it works and is fast enough then great!