我有一个OpenGL应用程序,它是渲染密集型的,也通过超文本传输协议获取东西。
遵循苹果的OpenGL示例,我最初使用NSTimer作为我的主绘制循环,然后发现(像其他人一样)这真的不是一个好主意(因为当缓慢的绘制导致绘制计时器堆积时,您有时会在处理触摸事件时遇到巨大的延迟)。
所以现在我使用的是http://www.idevgames.com/forum/showthread.php?t=17058用户godexsoft给出的策略(godexsoft搜索帖子)。具体地说,我的render run循环位于主线程上,包含以下内容:
while( CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.01f, FALSE) ==
kCFRunLoopRunHandledSource);这一行允许像触摸事件和与通信相关的事件在帧的渲染之间发生。它是有效的,但我想进一步改进它。有没有办法让触摸事件优先于其他事件(比如与通信相关的事件)?如果我可以这样做,我可以减少0.01f的数字,并获得更好的帧率。(我知道这可能意味着通信需要更长的时间才能恢复,但不滞后的触摸事件非常重要)。
发布于 2009-12-10 02:42:08
这并没有直接回答您的问题,但是您是否考虑过使用CADisplayLink来安排重绘?它是在iPhone OS 3.1中引入的。
https://stackoverflow.com/questions/1873004
复制相似问题