我有一个 OpenGL 应用程序,它渲染密集,还通过 HTTP 获取内容。
遵循 Apple 的 OpenGL 示例,我最初将 NSTimer 用于我的主要绘画循环,然后发现(像其他人一样)这确实不是一个好主意(因为当慢速绘画导致绘画时,有时处理触摸事件时会出现巨大延迟计时器堆积)。
所以目前我正在使用用户 godexsoft 在http://www.idevgames.com/forum/showthread.php?t=17058给出的策略(搜索 godexsoft 的帖子)。具体来说,我的渲染运行循环在主线程上,包含以下内容:
while( CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.01f, FALSE) ==
kCFRunLoopRunHandledSource);
这条线允许在渲染帧之间发生触摸事件和与通信相关的事情等事件。它有效,但我想进一步完善它。有什么办法可以让触摸事件优先于其他事件(比如与通信相关的东西)?如果我能做到这一点,我可以减少 0.01f 数字并获得更好的帧速率。(我知道这可能意味着通讯需要更长的时间才能返回,但不滞后的触摸事件非常重要)。