Static and dynamic D language bindings for SDL3 and its official extension libraries, compatible with BetterC, @nogc, and nothrow.
BindBC-SDL is a set of bindings that allow the D programming language to interface with SDL3 (Simple DirectMedia Layer) and its official extension libraries. It provides both static and dynamic linking options, enabling developers to create cross-platform multimedia applications such as games, media players, and interactive simulations. The bindings solve the problem of accessing SDL's C API from D with minimal overhead and maximum compatibility.
D programmers developing multimedia applications, especially game developers and creators of real-time interactive software who need direct access to SDL's graphics, audio, and input APIs.
Developers choose BindBC-SDL because it offers a direct, low-overhead binding to SDL3 with full support for D's advanced features like BetterC, @nogc, and nothrow, enabling high-performance, memory-safe applications while maintaining compatibility with existing SDL documentation and tutorials.
Static & dynamic D bindings to SDL and the SDL_* libraries, compatible with BetterC, @nogc, and nothrow. (Mirror)
Provides a direct mapping to SDL3's C API, enabling seamless adaptation of existing SDL documentation and tutorials with minimal code changes, as highlighted in the README's reliance on official SDL resources.
Offers both static and dynamic bindings, allowing developers to choose based on deployment needs—static for minimal footprint or dynamic for runtime library loading—with configurations like staticBC for BetterC compatibility.
Includes D-style PascalCase.camelCase enums and struct fields alongside C-style variants, improving code readability and integration with D idioms, as configurable via version identifiers like SDL_D_Enums_Only.
Extends beyond common platforms to include special targets like Nintendo 3DS and Sony Vita via custom version identifiers, broadening the reach of D applications without custom bindings.
Designed with @nogc and nothrow compatibility, making it suitable for real-time applications where garbage collection and exceptions are undesirable, as emphasized in the README's philosophy.
Dynamic bindings require manual library loading, error handling with BindBC-Loader, and version checks, adding boilerplate code and runtime failure points if not meticulously implemented.
Satellite libraries like SDL_mixer and SDL_net are based on pre-release commits, with the README noting that their APIs and version identifiers may change, leading to potential breaking changes and compatibility headaches.
The entry point system using makeSDLMain is opt-in but complex, especially when integrating with DRuntime—the README warns it's not advised for inexperienced programmers and requires careful exception handling.
Requires explicit management of version identifiers, library names, and subConfigurations in dub files, which can be error-prone and tedious for projects using multiple SDL extensions or targeting specific versions.
D language bindings for the Godot Engine's GDNative API
Bindings compatible with -betterC and @nogc, using bindbc-loader
A GitHub organization hosting all Derelict bindings including OpenGL and other multimedia/game related library bindings. (OpenGL 3, Bgfx, ENet, SDL 2, GLFW 3,OpenGLES, Free Image, Assimp3, libtheora, libogg, libvorbis, SFML 2, libpq, PhysicsFS, Open Dynamics Engine, Lua, DevIL, OpenAL, ALURE)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.