feat: use CAMetalDisplayLink for metal renderer to fix refresh rate issues

- update imgui to use stream fps instead of hardcoded 60
- hide renderer setting for iOS < 17 as CAMetalDisplayLink only supports later versions
This commit is contained in:
Acaki committed 2025-08-10 20:58:56 +08:00
1 parent 8d05e8e670
commit 628ce0f12e
9 files changed
+147 -46

No files matched your search

+5 -2
View File
@@ -35,6 +35,9 @@
_plots = [ImGuiPlots sharedInstance].plots;
// Store stream FPS to synchronize MTKView
_streamFps = streamFps;
return self;
}
@@ -83,7 +86,7 @@
self.mtkView.device = self.device;
self.mtkView.delegate = self;
self.mtkView.preferredFramesPerSecond = 60; // ImGui overlay will always render at this rate
self.mtkView.preferredFramesPerSecond = _streamFps; // Synchronize with stream framerate
self.mtkView.opaque = NO;
self.mtkView.enableSetNeedsDisplay = NO;
@@ -166,7 +169,7 @@
#if TARGET_OS_SIMULATOR
[commandBuffer presentDrawable:view.currentDrawable];
#else
[commandBuffer presentDrawable:view.currentDrawable afterMinimumDuration:1.0 / view.preferredFramesPerSecond];
[commandBuffer presentDrawable:view.currentDrawable afterMinimumDuration:1.0 / _streamFps];
#endif
[commandBuffer commit];
#endif