Can I get an overview of SDL3 and it's components

Hi, sorry for what I feel is a very noobish question, but given all the changes that are coming with SDL3 and my very little experience with SDL2 I was hoping to get an over-arching breakdown of the SDL3 ecosystem.

I’ve used the Windowing API and I’ve seen there is a new GPU API coming which I am very excited to give a try, I’ve also seen mentions to SDL_FileSystem and SDL_Storage? Are these new, do they integrate with the GPU API for direct storage etc?
Are there any other components to SDL that I am missing?

Also can you use these APIs without the windowing API if you already had one of those in mind? Thinking for things like Surfaces where they are usually provided by the window for GPU APIs to render to.

Thanks in advanced :slight_smile:

The migration guide lists many of the differences between SDL2 and SDL3.

You might want to browse the “API reference” on the SDL3 wiki. There seems to be quite a few functions missing from the category pages but you could take a look at the content of the header files that are linked there to find more information. The index page seems to contain most functions.

SDL_filesystem contains a few new functions. SDL_GetBasePath and SDL_GetPrefPath already existed in SDL2.

SDL_storage is new but I don’t know much about it.

It doesn’t look like the GPU API will be ready in time for the release of SDL 3.2 (the first official “stable” SDL3 release). There seems to be quite heavy work being done here but from reading the discussion it doesn’t seem certain how much of that (all, some or nothing) that will end up becoming part of the official SDL GPU API.

I think most SDL functions work without a window. You will need a window for things like keyboard input because the OS does not let you receive key presses unless the window has focus as that would be a security issue. You can use surfaces without creating a window but if you want to draw anything to the screen you obviously need to have a window.

1 Like

Thanks for the response. So filesystem and storage aren’t separate packages then. Just a separate header in the same library. I was worried for a second I was going to have to start managing a whole bunch of additional libraries.

It doesn’t look like the GPU API will be ready in time for the release of SDL 3.2

That’s a shame. But honestly given the complexity of the APIs they are wrapping and the differences it’s hard to be surprised. I guess I will just have to wait a bit longer.

Yes, they’re both part of SDL. They’re not “extension libraries” like SDL_image and SDL_ttf.