fixed fps counter and figured out why the fonts were not rendering properly

This commit is contained in:
Vicente Ferrari Smith 2026-01-26 13:19:50 +01:00
parent 016047f1b6
commit dd3b63f70f
3 changed files with 28 additions and 26 deletions

View File

@ -209,7 +209,7 @@ pub fn main() !void {
rl.clearBackground(.sky_blue); rl.clearBackground(.sky_blue);
rl.beginShaderMode(font.shader); rl.beginShaderMode(font.shader);
rl.gl.rlSetTexture(vollkorn[3].texture.id); rl.gl.rlSetTexture(vollkorn[0].texture.id);
rl.gl.rlBegin(rl.gl.rl_quads); rl.gl.rlBegin(rl.gl.rl_quads);
const lorem = @embedFile("embeds/lorem.txt"); const lorem = @embedFile("embeds/lorem.txt");
@ -217,7 +217,7 @@ pub fn main() !void {
var y : f32 = 0; var y : f32 = 0;
var it = std.mem.splitScalar(u8, lorem, '\n'); var it = std.mem.splitScalar(u8, lorem, '\n');
while (it.next()) |line| { while (it.next()) |line| {
vollkorn[2].render_text( vollkorn[0].render_text(
line, line,
rl.Vector2{ .x = 0, .y = y}, rl.Vector2{ .x = 0, .y = y},
true, true,
@ -227,7 +227,7 @@ pub fn main() !void {
true true
); );
const font_linegap : f32 = @floatFromInt(vollkorn[3].face.size().metrics().height >> 6); const font_linegap : f32 = @floatFromInt(vollkorn[0].face.size().metrics().height >> 6);
const dpi_font_linegap = font_linegap / rl.getWindowScaleDPI().y; const dpi_font_linegap = font_linegap / rl.getWindowScaleDPI().y;
y += dpi_font_linegap; y += dpi_font_linegap;
@ -413,7 +413,7 @@ pub fn main() !void {
//rl.drawText("Congrats! You created your first window!", rl.getMouseX(), rl.getMouseY(), 20, .white); //rl.drawText("Congrats! You created your first window!", rl.getMouseX(), rl.getMouseY(), 20, .white);
//rl.drawRectangleLines(0, 0, 100, 100, .red); //rl.drawRectangleLines(0, 0, 100, 100, .red);
misc.drawFPS(0, 0, frame_time, frame); misc.drawFPS(0, 0, frame_time);
//elf.draw(); //elf.draw();
@ -424,6 +424,8 @@ pub fn main() !void {
rl.endDrawing(); rl.endDrawing();
rl.swapScreenBuffer(); rl.swapScreenBuffer();
frame += 1;
} }
} }

View File

@ -1,5 +1,4 @@
const c = @import("c.zig").c; const rl = @import("raylib");
// const rl = @import("raylib");
const FPS_CAPTURE_FRAMES_COUNT : i32 = 30; // 30 captures const FPS_CAPTURE_FRAMES_COUNT : i32 = 30; // 30 captures
const FPS_AVERAGE_TIME_SECONDS : f32 = 0.5; // 500 milliseconds const FPS_AVERAGE_TIME_SECONDS : f32 = 0.5; // 500 milliseconds
@ -10,42 +9,43 @@ var history : [FPS_CAPTURE_FRAMES_COUNT]f32 = .{0} ** FPS_CAPTURE_FRAMES_COUNT;
var average : f32 = 0; var average : f32 = 0;
var last : f32 = 0; var last : f32 = 0;
pub fn drawFPS(posX : i32, posY : i32, fpsFrame : f32, frame : i32) void { pub fn drawFPS(posX : i32, posY : i32, fpsFrame : f32) void {
var color : c.Color = c.LIME; var color : rl.Color = .lime; // Good FPS
// var color : rl.Color = .lime; // Good FPS const fps : i32 = getFPS(fpsFrame);
const fps : i32 = getFPS(fpsFrame, frame);
if ((fps < 30) and (fps >= 15)) {color = c.ORANGE;} // Warning FPS if ((fps < 30) and (fps >= 15)) {color = .orange;} // Warning FPS
else if (fps < 15) color = c.RED; // Low FPS else if (fps < 15) color = .red; // Low FPS
c.DrawText(c.TextFormat("%2i FPS", fps), posX, posY, 20, color); rl.drawText(rl.textFormat("%2i FPS", .{fps}), posX, posY, 20, color);
} }
pub fn getFPS(fpsFrame : f32, frame : i32) i32 { pub fn getFPS(fpsFrame : f32) i32 {
var fps : i32 = 0; var fps : i32 = 0;
// if we reset the window, reset the FPS info // if we reset the window, reset the FPS info
if (frame == 0) // if (frame == 0)
{ // {
average = 0; // average = 0;
last = 0; // last = 0;
index = 0; // index = 0;
for (0..FPS_CAPTURE_FRAMES_COUNT) |i| history[i] = 0; // for (0..FPS_CAPTURE_FRAMES_COUNT) |i| history[i] = 0;
} // }
if (fpsFrame == 0) return 0; if (fpsFrame == 0) return 0;
if ((c.GetTime() - last) > FPS_STEP) if ((rl.getTime() - last) > FPS_STEP)
{ {
last = @floatCast(c.GetTime()); last = @floatCast(rl.getTime());
index = (index + 1) % FPS_CAPTURE_FRAMES_COUNT; index = (index + 1) % FPS_CAPTURE_FRAMES_COUNT;
average -= history[index]; average -= history[index];
history[index] = fpsFrame / FPS_CAPTURE_FRAMES_COUNT; history[index] = fpsFrame;
average += history[index]; average += history[index];
} }
fps = @intFromFloat(@round(1.0 / average)); const meanFrameTime = average / @as(f32, @floatFromInt(FPS_CAPTURE_FRAMES_COUNT));
fps = @intFromFloat(1.0 / meanFrameTime);
return fps; return fps;
} }