Skip to content

boyair/zsdl-fix-sdl3-error

This branch is 1 commit ahead of, 18 commits behind zig-gamedev/zsdl:refs/heads/main.

Folders and files

NameName
Last commit message
Last commit date
Jan 28, 2025
Jan 28, 2025
Jan 29, 2025
Nov 4, 2024
Jan 4, 2025
Nov 4, 2024
Jan 28, 2025
Jan 28, 2025
Jan 28, 2025

Repository files navigation

Zig bindings for SDL libs.

Getting started (SDL2)

Example build.zig:

pub fn build(b: *std.Build) !void {

    const exe = b.addExecutable(.{ ... });
    exe.linkLibC();

    const zsdl = b.dependency("zsdl", .{});
    
    exe.root_module.addImport("zsdl2", zsdl.module("zsdl2"));
    @import("zsdl").link_SDL2(exe);

    exe.root_module.addImport("zsdl2_ttf", zsdl.module("zsdl2_ttf"));
    @import("zsdl").link_SDL2_ttf(exe);
    
    exe.root_module.addImport("zsdl2_image", zsdl.module("zsdl2_image"));
    @imporT("zsdl").link_SDL2_image(exe);

    // Optionally use prebuilt libs instead of relying on system installed SDL...
    @import("zsdl").prebuilt.addLibraryPathsTo(exe);
    if (@import("zsdl").prebuilt.install_SDL2(b, target.result, .bin)) |install_sdl2_step| {
        b.getInstallStep().dependOn(install_sdl2_step);
    }
    if (@import("zsdl").prebuilt.install_SDL2_ttf(b, target.result, .bin)) |install_sdl2_ttf_step| {
        b.getInstallStep().dependOn(install_sdl2_ttf_step);
    }
    if (@import("zsdl").prebuilt.install_SDL2_image(b, target.result, .bin)) |install_sdl2_image_step| {
        b.getInstallStep().dependOn(install_sdl2_image_step);
    }
}

NOTE: If you want to use our prebuilt libraries also add the following to your build.zig.zon:

        .@"sdl2-prebuilt-macos" = .{
            .url = "https://github.com/zig-gamedev/sdl2-prebuilt-macos/archive/f14773fa3de719b3a399b854c31eb4139d63842f.tar.gz",
            .hash = "12205cb2da6fb4a7fcf28b9cd27b60aaf12f4d4a55be0260b1ae36eaf93ca5a99f03",
            .lazy = true,
        },
        .@"sdl2-prebuilt-x86_64-windows-gnu" = .{
            .url = "https://github.com/zig-gamedev/sdl2-prebuilt-x86_64-windows-gnu/archive/8143e2a5c28dbace399cbff14c3e8749a1afd418.tar.gz",
            .hash = "1220ade6b84d06d73bf83cef22c73ec4abc21a6d50b9f48875f348b7942c80dde11b",
            .lazy = true,
        },
        .@"sdl2-prebuilt-x86_64-linux-gnu" = .{
            .url = "https://github.com/zig-gamedev/sdl2-prebuilt-x86_64-linux-gnu/archive/2eccc574ad909b0d00b694b10c217a95145c47af.tar.gz",
            .hash = "12200ecb91c0596d0356ff39d573af83abcd44fecb27943589f11c2cd172763fea39",
            .lazy = true,
        },

Now in your code you may import and use zsdl2:

const std = @import("std");
const sdl = @import("zsdl2");

pub fn main() !void {
    ...
    try sdl.init(.{ .audio = true, .video = true });
    defer sdl.quit();

    const window = try sdl.Window.create(
        "zig-gamedev-window",
        sdl.Window.pos_undefined,
        sdl.Window.pos_undefined,
        600,
        600,
        .{ .opengl = true, .allow_highdpi = true },
    );
    defer window.destroy();
    ...
}

Getting started (SDL3)

TODO

About

Zig bindings for SDL libs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 92.2%
  • C++ 4.4%
  • Zig 2.8%
  • Other 0.6%