New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[bug] [macOS] verticalSync problem since macOS13 (GLFW-inherited issue) #7760
Comments
Does this issue happen with both |
yes, adding the framerate is better top the point of things being mostly unnoticeable, if the CPU load is low and if you don't relay of ofGetElapsedTimef() timing with vsync, frameRate(60), OF fullscreen: timing without vsync, frameRate(60), OF fullscreen: and to give good measure of what is achievable, timing native fullscreen with game mode and no vsync: (more can be found here) |
I think ofSetFrameRate should be redesigned out of ofTimer. and some insights from Glenn Fiedler about fps https://gafferongames.com/post/fix_your_timestep/ |
Framerate drift is merged and it is much more precise now. |
Thanks for the work on this, all! |
macOS13 introduces jitter in the timing of update/draw cycle of GLFW apps glfw/glfw#2249. it has (at least) 2 concrete negative effects in OF as demontrated in #7752 (comment)
sometimes the jitter pushes the
draw()
later than the actual frame cycle, stuttering/dropping a frameofGetElapsedTimef()
is not reliable to control phase-based animations requiring isochronous stepsuntil it is fixed within GLFW (seems hard) — or at OF-level by working around the Timer (as inspiration see the google deepmind workaround) , or by implementing a metal backend, or other —
ofSetVerticalSync(false)
and usingofSetFrameRate(nnn)
is recommended. using macOS14 game mode in fullscreen also helps as seen in #7752 (comment).the uneven timing issue can be worked around by using something like
ofGetExpectedPaintTimef()
, but that will not prevent dropped frames.this issue will be updated as the GLFW and OF evolution affects the behaviour.
The text was updated successfully, but these errors were encountered: