Как отключить vsync на macOS

со всеми моими программами SDL/OpenGL частота кадров застряла на 60fps, поэтому похоже, что vsync включен, но не мной, ни в моем коде или моих настройках. поэтому я хотел бы сейчас, если есть способ отключить его, возможно, в некоторых глубоких настройках macOS?

3 ответов


Это позволило мне получить около ~ 700 кадров в секунду на моем MacBook Pro.

Это не является постоянным либо, идеально подходит для тестирование/аттестация.

источник


Добро пожаловать в 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>

это не самое приятное решение, но на самом деле это единственное, что я нашел, что работает как обаяние.