Как отобразить реальную частоту кадров в га?
Я начал экспериментировать с kha на haxe и скомпилировал пример проекта для своего старого iPad2.
Теперь мне интересно, как отобразить фактическую частоту кадров на экране.
В качестве отправной точки я нашел этот репо:
https://github.com/lewislepton/kha-tutorial-series/blob/master/007_fontText
Он загружает шрифт и отображает текст на экране. Он также устанавливает частоту кадров 60 кадров в секунду.
Так что теперь мне просто нужно вычислить fps и отобразить его через drawString.
Но как рассчитать это?
РЕДАКТИРОВАТЬ:
Благодаря @RobDangerous это, кажется, работает:
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();
}
// ...
}
1 ответ
Вы можете использовать Scheduler.realTime для получения реального времени (Scheduler.time, напротив, является сглаженным значением времени, оптимизированным для плавной анимации). Вы можете поместить realTime в переменную в одном кадре (то есть в обратном вызове рендеринга) и вычесть его из realTime в следующем кадре, чтобы получить время кадра в секундах. Инвертируйте его, чтобы получить ваш fps.