> On Sep 22, 2015, at 6:56 PM, Jerry Krinock <je...@ieee.org> wrote:
> 
> In Apple document QA1385, in Listing 2, describing how to drive OpenGL 
> Rendering Loops 10 years ago, an NSTimer, repeating every 1 millisecond, is 
> added to an app’s run loop [1].  

Just to be clear: don't do that. Use CVDisplayLink.


> Referring to this timer, the text says that:
> 
> "When vertical synchronization is enabled in your OpenGL application, during 
> each retrace period, when the timer fires, …”
> 
> Hmmmm, a timer with time interval of 1 millisecond is now going to fire 
> during each retrace period, 16.7 milliseconds or so!  This implies that when 
> vertical synchronization is enabled in an OpenGL application, the 
> application’s run loop, in all modes, is synchronized to the video frame and 
> can go no faster.  Is this correct?

It is not. The timer would fire multiple times per retrace if it were 
unhindered. But at some point the timer callback will provoke an OpenGL buffer 
swap, and that will block until the next retrace when vertical synchronization 
is enabled. The gated buffer swap inside the timer callback is the 
rate-limiting factor, not anything in the runloop or NSTimer itself.


-- 
Greg Parker     gpar...@apple.com     Runtime Wrangler



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to