Со всеми моими программами SDL/OpenGL частота кадров застревает до 60 кадров в секунду, поэтому похоже, что vsync включен, но не мной, ни моим кодом, ни моими настройками. поэтому я хотел бы сейчас, если есть способ отключить его, возможно, в некоторых глубоких настройках macOS?
Как отключить vsync на macOS
Ответ 1
После ГОДА, ищущего обходное решение (и с помощью Brett Hale), это то, что сработало для меня - я добавил этот фрагмент кода в начале из моего цикла рендеринга (и не только в init, так как Apple, похоже, reset устанавливает значения SwapInterval каждый раз...) и, наконец, может иметь несинхронизированную частоту кадров:
#ifdef __APPLE__
GLint sync = 0;
CGLContextObj ctx = CGLGetCurrentContext();
CGLSetParameter(ctx, kCGLCPSwapInterval, &sync);
#endif
Не забудьте включить <OpenGL/gl.h>
Это не самое приятное решение, но на самом деле это единственное, что я нашел, что работает как шарм.
Ответ 2
Это позволило мне обойти около 700 кадров в секунду на моем MacBook Pro.
- Загрузить графические утилиты для Xcode - конец августа 2014 года
- Установите или просто установите Графические инструменты
- Откройте Отладка Quartz
- Перейдите в Инструменты → Показать инструменты синхронизации луча
- Выберите Отключить синхронизацию луча
Он также не является постоянным, идеально подходит для тестирования/бенчмаркинга.
Ответ 3
Добро пожаловать в SO. Я изложил подход здесь по аналогичному вопросу. Вы должны учитывать, что большинство ЖК-мониторов Mac заблокированы до 60 Гц, а более поздние аппаратные средства ограничены частотой 120 Гц. Отключение vsync может просто привести к потерянным циклам CPU/GPU и, возможно, привести к разрыву артефактов.