代码之家  ›  专栏  ›  技术社区  ›  Hamy

正确查找自定义Java组件上的帧速率

  •  3
  • Hamy  · 技术社区  · 14 年前

    我不相信我的帧速率代码是正确的,我也找不到确切的例子,我在寻找什么。

    本质上,我有子类 java.awt.Component 以及 paint(Graphics) 我调用的方法 calculateFrameRate() 函数,如下所示。我不做任何增量绘图 update() . 这个数字似乎很高,我想知道组件类的固有双缓冲是否意味着油漆被调用的数量是它被渲染的两倍?不过,我对双重缓冲的东西有点生疏,这可能是完全错误的。

    以下是帧速率方法:

     private List<Long> updateTimes = new ArrayList<Long>();
    
    private void calculateFrameRate() {
        long time = System.currentTimeMillis();
    
        updateTimes.add(new Long(time));
    
        // We will have the wrong framerate for the first 30 draws. No big.
        float timeInSec = (time - updateTimes.get(0)) / 1000f;
    
        currentFrameRate_ = 30f / timeInSec;
    
        if (updateTimes.size() == 31)
            updateTimes.remove(0);
    
    }
    

    干杯,

    哈米

    1 回复  |  直到 14 年前
        1
  •  1
  •   Community CDub    7 年前

    作为另一种选择,你可以看看 System.nanoTime() . 这个 example 计算前面定义的帧数的平均值 FRAMES .