An SDL_Texture represents an image in GPU memory, usable by SDL's 2D Render API. This can be
significantly more efficient than using a CPU-bound SDL_Surface if you don't need to manipulate the image
directly after loading it.
If the loaded image has transparency or a colorkey, a texture with an alpha channel will be created.
Otherwise, SDL_image will attempt to create an SDL_Texture in the most format that most reasonably
represents the image data (but in many cases, this will just end up being 32-bit RGB or 32-bit RGBA).
There is a separate function to read files from an SDL_IOStream, if you need an i/o abstraction to
provide data from anywhere instead of a simple filesystem read; that function is
IMG_LoadTexture_IO ().
If you would rather decode an image to an SDL_Surface (a buffer of pixels in CPU memory), call IMG_Load
() instead.
When done with the returned texture, the app should dispose of it with a call to SDL_DestroyTexture().