diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/draw/draw.odin | 9 | ||||
| -rw-r--r-- | src/main.odin | 41 |
2 files changed, 46 insertions, 4 deletions
diff --git a/src/draw/draw.odin b/src/draw/draw.odin index 1762b25..6c013de 100644 --- a/src/draw/draw.odin +++ b/src/draw/draw.odin @@ -5,6 +5,7 @@ import "core:math" import sg "shared:sokol/gfx" import sapp "shared:sokol/app" +import sdtxt "shared:sokol/debugtext" import sglue "shared:sokol/glue" Vec2 :: [2]f32 @@ -92,6 +93,12 @@ init :: proc(r: ^Renderer) { r.sampler = sg.make_sampler({}) r.tint = {1, 1, 1, 1} + + sdtxt.set_context(sdtxt.make_context({ + color_format = .RGBA8, + depth_format = .NONE, + sample_count = 1, + })) } deinit :: proc(r: ^Renderer) { @@ -118,6 +125,8 @@ end_frame :: proc(r: ^Renderer) { flush_current_batch(r) clear(&r.current_batch.vertices) + sdtxt.draw() + framebuffer_draw_end(r.screen) r.projection = linalg.matrix_ortho3d( diff --git a/src/main.odin b/src/main.odin index 48bf454..e58b94d 100644 --- a/src/main.odin +++ b/src/main.odin @@ -13,6 +13,7 @@ import sapp "shared:sokol/app" import sglue "shared:sokol/glue" import stime "shared:sokol/time" import slog "shared:sokol/log" +import sdtxt "shared:sokol/debugtext" import "draw" import "phys" @@ -33,6 +34,10 @@ state: struct { physics_world: phys.World, input: Input, + + fps: f32, + last_fps: f32, + frames_rendered: int, } logger: log.Logger @@ -53,6 +58,18 @@ init :: proc "c" () { logger = {func=slog.func}, }) + sdtxt.setup({ + fonts = { + 0 = sdtxt.font_kc853(), + // sdtxt.font_kc854(), + // sdtxt.font_z1013(), + // sdtxt.font_cpc(), + // sdtxt.font_c64(), + // sdtxt.font_oric(), + }, + logger = {func=slog.func}, + }) + init_keybinds(&state.input) draw.init(&state.renderer) @@ -72,10 +89,6 @@ init :: proc "c" () { }) i += 65 } - // make_platform(Rect{ - // start = {i, 340}, - // size = {20, 20} - // }) make_platform(Rect{ start = {160, 320}, @@ -123,6 +136,16 @@ frame :: proc "c" () { update_player(&state.player, f32(sapp.frame_duration())) + // sdtxt.canvas(f32(sapp.width()), f32(sapp.height())) + sdtxt.canvas(draw.SCREEN_WIDTH, draw.SCREEN_HEIGHT) + sdtxt.origin(0.1, 0.1) + sdtxt.home() + sdtxt.font(0) + + stats := sg.query_frame_stats() + sdtxt.printf("FPS: %f\n", state.fps) + sdtxt.printf("Draw calls: %d\n", stats.num_draw) + draw.new_frame(&state.renderer) draw_player(state.player) @@ -132,6 +155,14 @@ frame :: proc "c" () { draw.end_frame(&state.renderer) free_all(context.temp_allocator) + + state.frames_rendered += 1 + now := f32(stime.sec(stime.now())) + if now - state.last_fps > 1 { + state.fps = f32(state.frames_rendered) / (now - state.last_fps) + state.last_fps = now + state.frames_rendered = 0 + } } event :: proc "c" (event: ^sapp.Event) { @@ -147,6 +178,7 @@ event :: proc "c" (event: ^sapp.Event) { cleanup :: proc "c" () { context = default_context() sg.shutdown() + sdtxt.shutdown() delete_entity_list(state.platform_list) } @@ -169,3 +201,4 @@ main :: proc() { log.destroy_console_logger(logger) } + |
