OptimisticMonkey
OptimisticMonkey

Reputation: 518

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....

Upvotes: 8

Views: 3173

Answers (1)

Ben Stiglitz
Ben Stiglitz

Reputation: 4004

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.

Upvotes: 3

Related Questions