【问题标题】:GLKViewController: incorrect fpsGLKViewController:不正确的 fps
【发布时间】:2011-10-28 16:00:20
【问题描述】:

希望有一些 GLKViewController 专家在那里,因为我有一些问题 :)

简单介绍一下我的应用。我有一个 UINavigationController 在其中推送不同的屏幕。

在某些时候,我进入了我的游戏屏幕,它是 UINavigationController 的子类。在此屏幕中,在viewDidLoad 中,我手动创建了一个 EAGLContext、GLKView 并实例化了一个新的 GLKViewController(以处理我的更新和绘制调用)。

我将首选 fps 设置为 30。

问题是前 3-4 次更新调用带有正确的 DT,但后来我有 2-3 帧,它们之间有 1 秒。我使用controller.timeSinceLastUpdate 测量DT。 所以我觉得:

dt=0.33
dt=0.33
dt=0.33
dt=1.07
dt=1.05
dt=0.33
dt=0.33

在此之后,我只得到有效的 DT 时间。我不知道为什么这些帧有这种延迟。我测量了 update & draw 方法所用的时间,距离 1 秒还差得很远。

另外,我没有加载任何纹理/创建任何几何图形。一切都是在加载时完成的,因为它是一个相当小的游戏。

另外,如果我弹出游戏屏幕控制器,然后推回游戏屏幕的另一个实例,这个新的 GLKViewController 只会大约每 1 秒调用一次我的更新方法。

有人在使用 GLKViewController 时遇到帧率问题吗?

谢谢,

【问题讨论】:

    标签: iphone frame-rate glkit


    【解决方案1】:

    问题是您不知道设备在刷新之间还做了什么:)

    您可能只花了 0.1 秒处理下一帧,但如果出现内存警告,那么您应用的其他部分也需要时间来处理。我猜 gl 控制器会尽力保持首选帧速率,但如果在后台发生很多事情,那么它就无能为力了。

    只要您确保您的代码尽可能快地渲染并且不会以与帧速率相同的方式出现峰值,那么它就不是您的渲染路径。从您的问题来看,您似乎已经对此进行了测试。

    您可能想要做的另一件事是注意可能传递到您的应用程序中的其他通知(即内存警告)。

    最后,慢帧是否有规律——它们是否与正在加载的新图像或文件访问一致?你事先做了尽可能多的事吗?编辑 - 重读你的问题让我觉得你已经这样做了,对不起!

    对不起,我不能再使用了:(

    【讨论】:

    • 感谢您的回答。我见过的唯一模式就是我所说的。在我第一次进入游戏屏幕时,我第一次注意到这两个(2-3)帧之后的大滞后。如果我回到主菜单并尝试再次进入游戏,我只会得到大约 1 秒的帧。我会继续调查这个问题,如果我发现了什么,我会在这里发布。
    【解决方案2】:

    好吧,我终于想通了。事实证明,它甚至与 GLKViewController 无关(惊喜!)。

    这与我显示游戏屏幕视图控制器的方式有关,如下所示:

        GameAreaViewController* gameController = [[GameAreaViewController alloc] init];
    
        [UIView beginAnimations:@"animation" context:nil];
        [self.navigationController pushViewController: gameController animated:NO]; 
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; 
        [UIView setAnimationDuration:0.7f];
        [UIView commitAnimations];        
    
        SAFE_DEL(gameController);
    

    如果我使用 0.3f 的动画持续时间,那么我不会有任何延迟。在 0.5f 时我有时会得到它,而在 0.7 我总是得到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-11
      • 2014-03-18
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多