93 lines
2.5 KiB
Plaintext
93 lines
2.5 KiB
Plaintext
//------------------------------------------------------------------------------
|
|
// debugtext-print/module.jai
|
|
//
|
|
// Simple text rendering with sokol/debugtext, formatting, tabs, etc...
|
|
//------------------------------------------------------------------------------
|
|
#import "Basic";
|
|
#import,dir "../../sokol/log"(USE_GL=USE_GL);
|
|
#import,dir "../../sokol/gfx"(USE_GL=USE_GL);
|
|
#import,dir "../../sokol/app"(USE_GL=USE_GL);
|
|
#import,dir "../../sokol/glue"(USE_GL=USE_GL);
|
|
#import,dir "../../sokol/debugtext"(USE_GL=USE_GL);
|
|
|
|
NUM_FONTS :: 3;
|
|
|
|
Color :: struct {
|
|
r, g, b: u8;
|
|
}
|
|
|
|
state: struct {
|
|
pass_action: sg_pass_action;
|
|
palette: [3]Color;
|
|
} = .{
|
|
pass_action = .{
|
|
colors = .[
|
|
.{ load_action = .CLEAR, clear_value = .{ 0.0, 0.125, 0.25, 1.0 } },
|
|
.{}, .{}, .{},
|
|
],
|
|
},
|
|
palette = .[
|
|
.{ 0xf4, 0x43, 0x36 },
|
|
.{ 0x21, 0x96, 0xf3 },
|
|
.{ 0x4c, 0xaf, 0x50 },
|
|
],
|
|
};
|
|
|
|
init :: () #c_call {
|
|
sg_setup(*(sg_desc.{
|
|
environment = xx,force sglue_environment(),
|
|
logger = .{ func = slog_func },
|
|
}));
|
|
|
|
sdtx_setup(*(sdtx_desc_t.{
|
|
fonts[0] = sdtx_font_kc854(),
|
|
fonts[1] = sdtx_font_c64(),
|
|
fonts[2] = sdtx_font_oric(),
|
|
logger = .{ func = slog_func },
|
|
}));
|
|
}
|
|
|
|
frame :: () #c_call {
|
|
push_context,defer_pop;
|
|
|
|
frame_count := cast(u32) sapp_frame_count();
|
|
frame_time := sapp_frame_duration() * 1000.0;
|
|
|
|
sdtx_canvas(sapp_widthf() * 0.5, sapp_heightf() * 0.5);
|
|
sdtx_origin(3.0, 3.0);
|
|
for i : 0 .. NUM_FONTS-1 {
|
|
color := state.palette[i];
|
|
sdtx_font(cast(s32) i);
|
|
sdtx_color3b(color.r, color.g, color.b);
|
|
sdtx_printf("Hello '%'!\n", ifx((frame_count & (1<<7)) == 0) then "Welt" else "World");
|
|
sdtx_printf("\tFrame Time:\t\t%.3f\n", frame_time);
|
|
sdtx_printf("\tFrame Count:\t%d\t0x%04X\n", frame_count, frame_count);
|
|
sdtx_putr("Range Test 1(xyzbla)", 12);
|
|
sdtx_putr("\nRange Test 2\n", 32);
|
|
sdtx_move_y(2);
|
|
}
|
|
|
|
sg_begin_pass(*(sg_pass.{ action = state.pass_action, swapchain = xx,force sglue_swapchain() }));
|
|
sdtx_draw();
|
|
sg_end_pass();
|
|
sg_commit();
|
|
}
|
|
|
|
cleanup :: () #c_call {
|
|
sdtx_shutdown();
|
|
sg_shutdown();
|
|
}
|
|
|
|
main :: () {
|
|
sapp_run(*(sapp_desc.{
|
|
init_cb = init,
|
|
frame_cb = frame,
|
|
cleanup_cb = cleanup,
|
|
width = 640,
|
|
height = 480,
|
|
window_title = "debugtext-printf",
|
|
icon = .{ sokol_default = true },
|
|
logger = .{ func = slog_func },
|
|
}));
|
|
}
|