如何以kha显示真实帧率?
How to display the real frame rate in kha?
我开始在 haxe 上试验 kha,并为我年长的 iPad2 编写了一个示例项目。
现在我想知道如何在屏幕上显示实际帧率。
作为起点,我找到了这个 repo:
https://github.com/lewislepton/kha-tutorial-series/blob/master/007_fontText
它加载字体并在屏幕上显示一些文本。它还将帧速率设置为 60fps。
所以现在我只需要计算 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();
}
// ...
}
您可以使用 Scheduler.realTime 获得实际的实时时间(Scheduler.time 相反,是为流畅的动画优化的平滑时间值)。您可以将 realTime 放入一帧中的变量(也称为渲染回调中),并在下一帧中从 realTime 中减去它以获得以秒为单位的帧时间。反转它以获得您的 fps。
我开始在 haxe 上试验 kha,并为我年长的 iPad2 编写了一个示例项目。
现在我想知道如何在屏幕上显示实际帧率。
作为起点,我找到了这个 repo:
https://github.com/lewislepton/kha-tutorial-series/blob/master/007_fontText
它加载字体并在屏幕上显示一些文本。它还将帧速率设置为 60fps。
所以现在我只需要计算 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();
}
// ...
}
您可以使用 Scheduler.realTime 获得实际的实时时间(Scheduler.time 相反,是为流畅的动画优化的平滑时间值)。您可以将 realTime 放入一帧中的变量(也称为渲染回调中),并在下一帧中从 realTime 中减去它以获得以秒为单位的帧时间。反转它以获得您的 fps。