74 lines
1.5 KiB
Zig
74 lines
1.5 KiB
Zig
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 },
|
|
});
|
|
}
|