What should I do to make the graphics update smoothly with the image still loaded.
Not reloading the image with every redraw. Also doing what you do right now causes a lot of memory to be leaked, as you probably not delete the textures you create each frame. Move the whole tex_2d = SOIL_load_OGL_texture
into one-time initialization code.