const sokol = @import("sokol"); const slog = sokol.log; const sg = sokol.gfx; const sapp = sokol.app; const sglue = sokol.glue; const simgui = sokol.imgui; const imgui_pass_action = blk: { var ret: sg.PassAction = .{}; ret.colors[0] = .{ .load_action = .CLEAR, .clear_value = .{ .r = 0.0, .g = 0.0, .b = 0.0, .a = 1.0 }, }; break :blk ret; }; fn init() callconv(.c) void { sg.setup(.{ .environment = sglue.environment(), .logger = .{ .func = slog.func }, }); simgui.setup(.{ .logger = .{ .func = slog.func }, }); } fn deinit() callconv(.c) void { simgui.shutdown(); sg.shutdown(); } fn frame() callconv(.c) void { simgui.newFrame(.{ .width = sapp.width(), .height = sapp.height(), .delta_time = sapp.frameDuration(), .dpi_scale = sapp.dpiScale(), }); // --- IMGUI PASS --- sg.beginPass(.{ .action = imgui_pass_action, .swapchain = sglue.swapchain(), }); simgui.render(); sg.endPass(); // --- sg.commit(); } fn event(ev: [*c]const sapp.Event) callconv(.c) void { _ = simgui.handleEvent(ev.*); } pub fn main() void { sapp.run(.{ .init_cb = &init, .cleanup_cb = &deinit, .frame_cb = &frame, .event_cb = &event, .window_title = "Voxel Game", .width = 1280, .height = 720, .icon = .{ .sokol_default = true }, .logger = .{ .func = slog.func }, }); }