5

我开始在 haxe 上尝试 kha,并为我的旧 iPad2 编译了一个示例项目。

现在我想知道如何在屏幕上显示实际的帧速率。

作为起点,我发现了这个回购:

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();
    }

    // ...
}
4

1 回答 1

8

您可以使用 Scheduler.realTime 获得实际的实时时间(相比之下,Scheduler.time 是针对流体动画优化的平滑时间值)。您可以将 realTime 放入一帧中的变量中(也称为渲染回调),然后在下一帧中将其从 realTime 中减去,以获得以秒为单位的帧时间。反转它以获得您的fps。

于 2016-12-14T21:14:02.393 回答