I tried out a simple Hello Triangle with the new SDL3 GPU API. Considering I had it use Vulkan as the underlying library, my project ended up being ~250 lines of code, not counting the shaders (compare with ~40 LoC for OpenGL+GLEW+GLFW and over 1,000 for Vulkan+GLFW). I've since also figured out uniforms and I'm working on textures. While the documentation itself is a little sparse, once I figured out the functions the code I wrote ended up feeling very intuitive.
The moment I heard about SDL3's return, I was so hyped. I'm very happy to see it stable and in ABI. Setting up a dev environment now to play around with it and the new features. Great video going over the general changes and added features. Thank you for the work and effort you put into it. Cheers!
100% agreed -- a lot of good engineers have worked on sdl over the years, and I really think sdl 3 is a home run (i.e. going to be great for development)🙂
@@MikeShah Absolutely. So many new features and QoL changes that I'm personally excited to use, and I can only imagine how well seasoned devs will make use of all of these vast improvements. SDL2 was already fantastic, SDL3 will be legendary.
looks great. i'll probably use it just for the non-libc cross-platform system api stuff; file system, storage, file dialog, process, threading and keyboard.
Yeah i got bored last night and it took a few hours but i was able to get it working in xcode a bit easier than most of the metal/directx workflow stuff ive done together on that platform so I'd really like to lean into SDL3! (I primarily write opengl with Python but have been gravitating towards c++, SDL and DirectX the past few weeks)
I'm the developer of the Ada bindings and we have tasking in the language. If you have threading built into the language, especially safer threading, there's literally no need to use the "cross platform" pthread-like api. SDL3 is a massive API change and I don't want to hand bind that. As for the GPU API, they have their own shader compiler which compiles down to an abstract shader, which then was supposed to be compiled further down to whatever the hardware is using. But, I don't know if they've got that in yet.
Fair point! I haven't used SDL_Thread in production as I have mostly used SDL with C++ and D which have threading capabilities anyway -- so that's likely the same story with many languages :) That said, I imagine it could be nice to wrap SDL_Thread on platforms (I imagine C for instance) where you want a wide range of portability and to build up the concurrency model from simple primitives.
SDL 3 is going to crack the gaming industry.Combined with Raylib's 2-D/3-D capabilities, you can make any game/engine you want. In fact, while I am more of a Raylib person, I have to admit, SDL Is legendary. I also 'heard' but never used, but SDL Is header-first library based? There is a link in the wiki for just SDL Headers so I assume it is the case. I am excited though.
Are you saying you can combine Raylib with SDL3? SDL3 has vulkan support so that is quite important for the future. I wish Raylib would have vulkan support.
Very cool -- I've seen iota on the announcements recently :) I'll probably have a minimal window framework at some point too -- it's a good thing to know how to do, or otherwise for supporting other platforms.
It would be cool if you throw out some videos on how to use SDL3 with dlang, if that's of interest to you. I'd certainly like it :) I'm only just starting out on your dlang videos though, so maybe there is something there on C bindings that would cover this gap already.
The SDL series will be rebooted with SDL3 at some point in the near future -- I'd like to get at least a few episodes in before 2025. I'm thinking about how to support multiple languages.
I tried out a simple Hello Triangle with the new SDL3 GPU API. Considering I had it use Vulkan as the underlying library, my project ended up being ~250 lines of code, not counting the shaders (compare with ~40 LoC for OpenGL+GLEW+GLFW and over 1,000 for Vulkan+GLFW). I've since also figured out uniforms and I'm working on textures. While the documentation itself is a little sparse, once I figured out the functions the code I wrote ended up feeling very intuitive.
Not bad -- that's great to hear!
The moment I heard about SDL3's return, I was so hyped. I'm very happy to see it stable and in ABI. Setting up a dev environment now to play around with it and the new features.
Great video going over the general changes and added features. Thank you for the work and effort you put into it. Cheers!
100% agreed -- a lot of good engineers have worked on sdl over the years, and I really think sdl 3 is a home run (i.e. going to be great for development)🙂
@@MikeShah Absolutely. So many new features and QoL changes that I'm personally excited to use, and I can only imagine how well seasoned devs will make use of all of these vast improvements. SDL2 was already fantastic, SDL3 will be legendary.
I would like to see you do SDL3 GPU tutorial like you did with OpenGL
Will keep that in mind!
@@MikeShah Please think about it fondly!
looks great. i'll probably use it just for the non-libc cross-platform system api stuff; file system, storage, file dialog, process, threading and keyboard.
Yeah i got bored last night and it took a few hours but i was able to get it working in xcode a bit easier than most of the metal/directx workflow stuff ive done together on that platform so I'd really like to lean into SDL3!
(I primarily write opengl with Python but have been gravitating towards c++, SDL and DirectX the past few weeks)
Awesome!
I'm the developer of the Ada bindings and we have tasking in the language. If you have threading built into the language, especially safer threading, there's literally no need to use the "cross platform" pthread-like api.
SDL3 is a massive API change and I don't want to hand bind that.
As for the GPU API, they have their own shader compiler which compiles down to an abstract shader, which then was supposed to be compiled further down to whatever the hardware is using. But, I don't know if they've got that in yet.
Fair point! I haven't used SDL_Thread in production as I have mostly used SDL with C++ and D which have threading capabilities anyway -- so that's likely the same story with many languages :) That said, I imagine it could be nice to wrap SDL_Thread on platforms (I imagine C for instance) where you want a wide range of portability and to build up the concurrency model from simple primitives.
SDL 3 is going to crack the gaming industry.Combined with Raylib's 2-D/3-D capabilities, you can make any game/engine you want.
In fact, while I am more of a Raylib person, I have to admit, SDL Is legendary.
I also 'heard' but never used, but SDL Is header-first library based? There is a link in the wiki for just SDL Headers so I assume it is the case.
I am excited though.
Are you saying you can combine Raylib with SDL3? SDL3 has vulkan support so that is quite important for the future. I wish Raylib would have vulkan support.
Make a tutorial about setting SDL 3 using GPU API, i couldn't make it work in windows visual studio.
Will note this for the future
@@MikeShah
Thank you, waiting for that video.
Waiting as well! 😊
I used to use SDL2 for my D game engine, but decided to make my on instead (iota).
Very cool -- I've seen iota on the announcements recently :) I'll probably have a minimal window framework at some point too -- it's a good thing to know how to do, or otherwise for supporting other platforms.
It would be cool if you throw out some videos on how to use SDL3 with dlang, if that's of interest to you. I'd certainly like it :) I'm only just starting out on your dlang videos though, so maybe there is something there on C bindings that would cover this gap already.
The SDL series will be rebooted with SDL3 at some point in the near future -- I'd like to get at least a few episodes in before 2025. I'm thinking about how to support multiple languages.
Nice!
Amazing video as always, doc. Am wondering, will you ever post your SDL course on udemy?
Cheers! I'm going to update my SDL Course for the new 3.1.3 release now that the ABI is locked, then I'll consider it.