gpt4 book ai didi

iPhone OpenGL 和 NSTimer 问题

转载 作者:行者123 更新时间:2023-12-03 21:11:50 24 4
gpt4 key购买 nike

我有一个以 60hz 运行的 NSTimer。加载并渲染 OpenGL 场景后,我的游戏可以获得 60fps,稳定,一整天。然后,如果我重新编译应用程序,或重新加载它,它将获得 40fps。加载相同的资源。我多年来一直遇到这个问题,我只是想知道为什么。这太疯狂了,我想知道我是否应该放弃这个愚蠢的计时器。我的 3GS 负载之间的情况没有什么不同。有时它只会达到 40fps。显然,负载之间的时钟速率没有不同,因此在给定恒定场景的情况下,性能数据应该是恒定的。这是我的帧速率日志:

很好的负载:-)

帧速率:61帧率:61帧率:61帧率:60帧率:60帧率:61帧率:60帧率:60帧率:61帧率:60帧率:61

现在,我将继续什么都不做,重新编译并运行:

帧速率:43帧率:50帧率:45帧率:48帧率:40帧率:45帧率:42帧率:41帧率:42帧率:44帧率:41帧率:46

^- 视觉上的巨大差异。到底是什么原因造成的?

场景的相同区域,相同的摄像机设置。没有变量是不同的。

[编辑]有人提到,硬件解码器中未运行的音乐可能会导致这种情况,有时即使您进行了设置,解码器也不会接管。但是,我可以说,即使禁用音乐,也会发生这种情况[/编辑]

最佳答案

您是否尝试过使用CADisplayLink?来自 documentation :

A CADisplayLink object is a timer object that allows your application to synchronize its drawing to the refresh rate of the display.

...

Once the display link is associated with a run loop, the selector on the target is called when the screen’s contents need to be updated.

我个人没有使用过它,但看起来它可能会解决您因较低帧速率而遇到的任何问题,即使它本身不会提高您的帧速率。

关于iPhone OpenGL 和 NSTimer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com