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