I started experimenting with kha on haxe, and compiled a sample project for my aged iPad2.
Now I wonder how to display the actual framerate on screen.
As a starting point I found this repo:
https://github.com/lewislepton/kha-tutorial-series/blob/master/007_fontText
It loads a font and displays some text on screen. It also sets the framerate to 60fps.
So now I just need to calulate the fps and display it via drawString.
But how to calculate it?
EDIT:
Thanks to @RobDangerous this seems to work:
package;
import kha.Framebuffer;
import kha.Color;
import kha.Assets;
import kha.input.Surface;
import kha.Font;
import kha.Scheduler;
import Std;
class Project {
public var font:Font;
public var previousRealTime:Float;
public var realTime:Float;
public function new() {
font = Assets.fonts.OpenSans;
previousRealTime = 0.0;
realTime = 0.0;
Surface.get().notify(onTouchDown, onTouchUp, onTouchMove);
}
public function update():Void {
previousRealTime = realTime;
realTime = Scheduler.realTime();
}
public function render(framebuffer:Framebuffer):Void {
var graphics = framebuffer.g2;
graphics.begin();
var fps = 1.0 / ( realTime - previousRealTime );
graphics.font = font;
graphics.fontSize = 32;
graphics.color = Color.White;
graphics.drawString(Std.string(fps), 10, 10);
graphics.end();
}
// ...
}
You can use Scheduler.realTime to get the actual, real time (Scheduler.time in contrast is a smoothed time value optimized for fluid animations). You can put realTime into a variable in one frame (aka in a render callback) and subtract it from realTime in the next frame to get your frame time in seconds. Invert it to get your fps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With