WindowServer只会以最高60FPS更新屏幕(除非你用Quartz Debug关闭它,但一般情况下,它将限制为60FPS,它永远不会是1000FPS).试图强迫重绘比这更浪费是浪费精力.我希望,在正常情况下,调用-setFrame:NSView会导致-setNeedsDisplay:被调用,这意味着你的视图将在下次WindowServer绘制框架时重绘,所以即使你-setFrame:每秒调用1000次,它也不会将每秒绘制您的视图1000次.如果你看到口吃,我敢打赌,实际发生的是你的观点需要超过1/60秒才能重绘.-[NSView drawRect:]在<1/60秒内很难做任何非平凡的光栅绘制(即你将要做的那种).
如果您只是想移动视图(并且您不需要重绘它),您可以尝试调用-setFrameOrigin并使用Layer支持的视图.我希望AppKit/CoreAnimation能够在<1/60秒内轻松地重新定位一个支持图层的视图(无需重新光栅化)(轻松实现).
如果你想要一些更复杂的东西,简单地重新定位一个视图,并且你希望它以最大帧速率(再次,60FPS)发生,你可能会想要研究使用OpenGL.
但实际上,这里的带回家信息是"不要试图每秒做1000次." 调用Leap Motion委托方法时,更新视图的位置,让WindowServer按照自己的进度完成剩下的工作.
| 归档时间: | 
 | 
| 查看次数: | 621 次 | 
| 最近记录: |