【问题标题】:How to measure true FPS performance of OpenGL ES?如何测量 OpenGL ES 的真实 FPS 性能?
【发布时间】:2011-07-05 17:38:38
【问题描述】:

我意识到这是两个不同的东西:

绘图,并将其显示在屏幕上。

因此,虽然您可能会以 60 FPS 的速率从 CADisplayLink 进行每次调用,但如果您的绘图操作花费的时间略长于 1/60 秒,那么理论上您最终会得到 30 FPS,因为您错过了其他所有操作有机会通过渲染管道。

好的;知道了这一点,记住开始 NSTimeInterval 并在运行循环中增加一个帧计数器,然后在结束时检查是否经过了一秒并计算最后经过的一秒的 FPS,这似乎是无稽之谈。

我想要一种从屏幕上的 OpenGL ES 实际获取真实 FPS 值的方法。我查看了 Xcode 3.2.6 中的工具,但找不到适合的工具。但我记得有一种方法可以获得该 FPS 值。真实的。

怎么做?

【问题讨论】:

    标签: iphone objective-c ios opengl-es


    【解决方案1】:

    通过帧率may not be the best approach 测量 OpenGL ES 性能。我已经开始自己记录帧时间,这似乎可以更准确地评估我的整体渲染性能。将您的渲染封装在

    之类的东西中是微不足道的
    CFTimeInterval previousTimestamp = CFAbsoluteTimeGetCurrent();
    
    // Do your OpenGL ES frame rendering here, as well as presenting the onscreen render buffer
    
    CFTimeInterval frameDuration = CFAbsoluteTimeGetCurrent() - previousTimestamp;
    NSLog(@"Frame duration: %f ms", frameDuration * 1000.0);
    

    获取渲染时间。如果你想要的话,你的瞬时帧率是上面代码中frameDuration 的倒数。

    注意对整个帧的渲染进行计时,因为 iOS 和其他移动设备中基于图块的延迟渲染器可能会通过将特定渲染操作延迟到帧被绘制到屏幕之前的时间来隐藏特定渲染操作的真实成本。

    但是,如果您想从 Instruments 获得不太精确的帧速率,您可以使用 OpenGL ES Driver 工具来实现,该工具将每秒核心动画帧数作为其记录的统计数据之一报告:

    【讨论】:

    • 我们可以计算纯iOS应用的帧率吗?我们可以提高它的帧速率吗,因为我在一个混合 HTML 5 应用程序上工作,它的渲染屏幕非常慢。我对渲染屏幕的速度有些怀疑。还有我如何调整它的性能?
    • @iHungry - 这些问题最好在独立问题中提出,而不是 cmets。但是,您需要提供比您的问题更多的细节,以便任何人能够帮助您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多