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

Со всеми моими программами SDL/OpenGL частота кадров застревает до 60 кадров в секунду, поэтому похоже, что 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.

Он также не является постоянным, идеально подходит для тестирования/бенчмаркинга.

Источник

Ответ 3

Добро пожаловать в SO. Я изложил подход здесь по аналогичному вопросу. Вы должны учитывать, что большинство ЖК-мониторов Mac заблокированы до 60 Гц, а более поздние аппаратные средства ограничены частотой 120 Гц. Отключение vsync может просто привести к потерянным циклам CPU/GPU и, возможно, привести к разрыву артефактов.