Как отключить Vsync на mac os x 10.11 El Capitan

Здесь есть решение: Как отключить vsync в macOS

Однако это работает только для 10.10 и старше, а также для Xcode 6 и старше. Кажется, что кварцевая отладка, которая идет с Xcode 7, не имеет возможности включить vysnc (синхронизация луча).

Любая помощь будет принята с благодарностью. У меня Mac Book pro 13', если это имеет значение.


person Howard    schedule 03.11.2015    source источник
comment
Это вопрос программирования или вопрос пользователя?   -  person rmaddy    schedule 03.11.2015
comment
Я полагаю, что это не совсем вопросы программирования. Это скорее общий развивающийся вопрос, который можно использовать для решения проблем с графикой на Mac. Я думаю, что это может предотвратить проблемы с обновлением того, как графика рисуется на моем экране. Но я могу ошибаться. Если есть более подходящее место для публикации этого вопроса, я буду более чем счастлив переехать!   -  person Howard    schedule 04.11.2015


Ответы (1)


После ГОДов поиска обходного пути, это то, что сработало для меня - я добавил этот фрагмент кода в начале моего цикла рендеринга и, наконец, рассинхронизировал частоту кадров:

#ifdef __APPLE__
GLint                       sync = 0;
CGLContextObj               ctx = CGLGetCurrentContext();

CGLSetParameter(ctx, kCGLCPSwapInterval, &sync);
#endif

Не забудьте указать <OpenGL/gl.h>

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

person Nox    schedule 12.09.2016
comment
Подтверждено, что работает на macOS 10.14, но, похоже, это больше не работает на macOS 10.15 и 11, я пробовал kCGLCPSwapInterval / NSOpenGLCPSwapInterval / CVDisplayLink - person vk.edward.li; 24.07.2021
comment
Обнаруженный в macOS 10.15 и 11, фактический код рисования, включая flushBuffer(), не должен помещаться в func draw(_ dirtyRect: NSRect) - person vk.edward.li; 26.07.2021