Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CVDisplayLink instead of NSTimer

I have started to implement cvDisplayLink to drive the render loop instead of nstimer, as detailed in this technical note https://developer.apple.com/library/archive/qa/qa1385/_index.html

Is it better to do the actual rendering within the displaylink callback itself, or should I instead call setNeedsDisplay on the view and let the main thread do the rendering?

In order to render directly in the callback, I need to lock the opengl context, which I was hoping to avoid.

Is it possible to use cvDisplayLink for timing and still render on the main thread?

Thanks in advance for any feedback....

like image 631
OptimisticMonkey Avatar asked Nov 18 '09 17:11

OptimisticMonkey


1 Answers

There’s no intrinsic problem with locking the context; it should be uncontended and unlock quickly. Redrawing on the main thread, via -setNeedsDisplay:, has a chance of missing the VBL window just because of the runloop round-trip.

like image 107
Ben Stiglitz Avatar answered Oct 23 '22 15:10

Ben Stiglitz