我正在Xcode 6中创建一个Cocoa应用程序,该应用程序使用OpenGLView。我的NSOpenGLView扩展中的draw方法被重复调用,但我不确定它被调用的速率或设置速率的方式。
是否有默认"帧速率"对于NSOpenGLView,有没有办法改变它?
答案 0 :(得分:2)
Apple has a technote描述了如何驱动OpenGL渲染循环。答案是使用CoreVideo显示链接(CVDisplayLink
),它将在消隐间隔期间调用回调。
答案 1 :(得分:1)
通常在任何窗口系统中,窗口不会定期重绘;它仅在响应导致“损坏”或“脏”状态的事件时发生。
由于合成窗口管理器(OS X使用一个这样的窗口管理器),导致此“损坏”状态的事物近年来变得更小了。它曾经在窗口移动到顶部时发生,但在现代窗口管理器中,它只发生在调整大小事件期间/之后或窗口移动时。
- update
当视图的窗口移动或视图本身移动或调整大小时由Cocoa调用。
如果合成器在受到客户端损坏后没有立即重新绘制,但是等待更多的损坏,那么它可能会等待太长时间而完全错过垂直重新绑定。然后,即使有足够的CPU和GPU可用,帧速率也会下降。