Renderers, backends


I’m a bit confused about renderers. Here are a couple of questions :

  1. What is the difference between a backend and a renderer ?
    (there’re plenty of “backends”, directx, X11, etc.)

  2. What is a “software renderer” ?
    At the end everything goes through the video card which is hardware, the only
    thing is that the more VRAM you have, the more information you can store in it,
    and the less data transfers are needed between RAM and VRAM, isn’t it ?

  3. In SDL 1.3, as everything must pass through textures to be rendered on the
    renderer, supposing that we have set up a software renderer, that would mean
    a texture is not necessarily residing in the hardware, isn’t it ?

If someone is ready to clarify all that to me, I’d be grateful. It is really
abstract for me now.

Thanks for reading !

  1. A “backend” is a general term. There’s the windowing backends (Win32, X11, Cocoa, etc), the graphics backends (aka Renderers; Direct3D, OpenGL, DirectFB, etc), the audio backend, for starters.
    A renderer (or rendering/graphics backend, if you prefer) is responsible only for the graphical content within the bounds of the window. The bulk of your SDL-based code will probably be interaction with the renderer, which is why it’s such a frequently noted and discussed feature.

  2. The software renderer wraps the old surface API of SDL 1.2, so rendering of a texture to the framebuffer (render target, whatever you want to call it) is performed by the CPU rather than the GPU.
    It’s called “software” because it is not accelerated by the GPU, and they are rendered using a few software functions that execute only on the CPU.
    Excepting the case of very old graphics hardware and faulty drivers, generally the software renderer has very poor performance.

  3. The software renderer’s texture is a very thin wrapper around the SDL_Surface structure. SDL_Surface memory resides in CPU memory, not GPU memory.------------------------
    EM3 Nathaniel Fries, U.S. Navy