Can anyone explain to me in simple words what is the difference between texture and surface? I saw it used in SDL2
as SDL_Surface
and SDL_Texture
. SDL_Texture
is created from SDL_Surface
which in turn is created from image/bitmap. Both are collection of pixels. But I do not see the main difference between them (has to do something with GPU?)
I tried to google it but all explanations I found were too complex to understand them without digging deeper into computer graphics stuff.
A structure that contains an efficient, driver-specific representation of pixel data.
An SDL surface is just an image data type that contains the pixels of an image along with all data needed to render it. SDL surfaces use software rendering which means it uses the CPU to render. It is possible to render hardware images but it's a bit more difficult so we're going to learn it the easy way first.
SDL_Renderer is a struct that handles all rendering. It is tied to a SDL_Window so it can only render within that SDL_Window . It also keeps track the settings related to the rendering. There are several important functions tied to the SDL_Renderer.
Basically your assumption "has to do something with GPU?" is right.
SDL_Surface
is used in software rendering. With software rendering, as saloomi2012 correctly noticed, you are using regular RAM to store image data. Thus, in most cases you can access data buffer associated with surface directly, modifying its content, i.e. it is using CPU, hence the software name.
SDL_Texture
on the other hand, is used in a hardware rendering, textures are stored in VRAM and you don't have access to it directly as with SDL_Surface
. The rendering operations are accelerated by GPU, using, internally, either OpenGL or DirectX (available only on Windows) API, which in turn are using your video hardware, hence hardware rendering name.
Needless to say that hardware rendering is by orders of magnitude faster than software rendering and should be always be considered as primary option.
SDL_Texture
is loaded in your video card's VRAM instead of regular RAM.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With