do not reallocate the texture data on every update; use glTexSubImage2D instead