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

@ -47,4 +47,4 @@ Nulla ornare felis at odio finibus luctus. Ut porta, arcu ultricies pharetra ult
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In hac habitasse platea dictumst. Nunc mollis, erat et sodales dapibus, nisl neque accumsan justo, id ullamcorper risus tellus nec lacus. Mauris vestibulum erat vel sollicitudin eleifend. Fusce lacinia velit at sapien dapibus euismod. Duis efficitur felis sit amet nibh varius laoreet. Nullam quis enim sodales, condimentum sapien et, eleifend ante. Praesent iaculis urna vehicula nisi sodales pharetra.
Mauris a fringilla velit, vel sodales lacus. Integer vitae lacus lacus. Nunc nec arcu laoreet, varius odio vitae, finibus nisl. Mauris ut mi gravida, pellentesque ex sit amet, pellentesque turpis. Vivamus quis ipsum at risus cursus efficitur quis et odio. Maecenas vehicula et tellus id viverra. Curabitur eleifend lorem ut mi lacinia convallis. Nunc volutpat augue sed eros dapibus interdum. Proin id lorem libero.
Cras et arcu at nisl hendrerit fringilla. Sed sed rutrum enim, vel blandit nibh. In ut sapien velit. Etiam arcu dui, suscipit non justo commodo, scelerisque faucibus ligula. Aliquam et mi fringilla, ultricies felis ac, feugiat velit. Aliquam hendrerit varius nisl, in porttitor erat ullamcorper id. Curabitur nec mauris nec ex lacinia luctus a in turpis. Aliquam tempus felis eu sagittis laoreet. Quisque sollicitudin faucibus quam nec fermentum. Ut eleifend ipsum sed eros porta dignissim. Suspendisse faucibus nunc dui, ut volutpat ipsum blandit sit amet. Curabitur viverra tortor justo, eu tincidunt massa porttitor eget. Pellentesque auctor ornare felis sed sollicitudin.
Suspendisse rutrum, magna in viverra aliquet, velit nibh iaculis orci, a fermentum lorem mauris quis tellus. Maecenas vestibulum ante felis, ac viverra lectus iaculis ut. Mauris luctus sed eros pharetra lobortis. Donec dignissim, lorem et viverra scelerisque, urna justo pellentesque orci, quis pretium elit dolor sed enim. Etiam diam metus, imperdiet sit amet interdum at, laoreet ac eros. Praesent condimentum cursus mattis. Integer at ligula lectus. Suspendisse hendrerit sollicitudin metus et tristique. Donec eget neque nunc. Nulla in ligula eget dui vehicula aliquet nec et metus. Donec ornare massa sed mauris hendrerit tempor. Fusce non nisi eros. Praesent ultrices enim sapien, in eleifend ex semper at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Suspendisse efficitur tellus sed tortor sodales, ac scelerisque enim egestas. Aliquam erat volutpat.
Suspendisse rutrum, magna in viverra aliquet, velit nibh iaculis orci, a fermentum lorem mauris quis tellus. Maecenas vestibulum ante felis, ac viverra lectus iaculis ut. Mauris luctus sed eros pharetra lobortis. Donec dignissim, lorem et viverra scelerisque, urna justo pellentesque orci, quis pretium elit dolor sed enim. Etiam diam metus, imperdiet sit amet interdum at, laoreet ac eros. Praesent condimentum cursus mattis. Integer at ligula lectus. Suspendisse hendrerit sollicitudin metus et tristique. Donec eget neque nunc. Nulla in ligula eget dui vehicula aliquet nec et metus. Donec ornare massa sed mauris hendrerit tempor. Fusce non nisi eros. Praesent ultrices enim sapien, in eleifend ex semper at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Suspendisse efficitur tellus sed tortor sodales, ac scelerisque enim egestas. Aliquam erat volutpat.

View File

@ -209,7 +209,7 @@ pub fn main() !void {
rl.clearBackground(.sky_blue);
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);
const lorem = @embedFile("embeds/lorem.txt");
@ -217,7 +217,7 @@ pub fn main() !void {
var y : f32 = 0;
var it = std.mem.splitScalar(u8, lorem, '\n');
while (it.next()) |line| {
vollkorn[2].render_text(
vollkorn[0].render_text(
line,
rl.Vector2{ .x = 0, .y = y},
true,
@ -227,7 +227,7 @@ pub fn main() !void {
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;
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.drawRectangleLines(0, 0, 100, 100, .red);
misc.drawFPS(0, 0, frame_time, frame);
misc.drawFPS(0, 0, frame_time);
//elf.draw();
@ -424,6 +424,8 @@ pub fn main() !void {
rl.endDrawing();
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_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 last : f32 = 0;
pub fn drawFPS(posX : i32, posY : i32, fpsFrame : f32, frame : i32) void {
var color : c.Color = c.LIME;
// var color : rl.Color = .lime; // Good FPS
const fps : i32 = getFPS(fpsFrame, frame);
pub fn drawFPS(posX : i32, posY : i32, fpsFrame : f32) void {
var color : rl.Color = .lime; // Good FPS
const fps : i32 = getFPS(fpsFrame);
if ((fps < 30) and (fps >= 15)) {color = c.ORANGE;} // Warning FPS
else if (fps < 15) color = c.RED; // Low FPS
if ((fps < 30) and (fps >= 15)) {color = .orange;} // Warning 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;
// if we reset the window, reset the FPS info
if (frame == 0)
{
average = 0;
last = 0;
index = 0;
// if (frame == 0)
// {
// average = 0;
// last = 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 ((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;
average -= history[index];
history[index] = fpsFrame / FPS_CAPTURE_FRAMES_COUNT;
history[index] = fpsFrame;
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;
}