Я пишу игру с OGL/GLFW на С++.
Моя игра всегда работает со скоростью 60 кадров в секунду и без разрывов экрана. После некоторых исследований кажется, что функция glfwSwapInterval()
должна иметь возможность включать/отключать вертикальную синхронизацию или ограничение 60 кадров в секунду.
Однако независимо от значения, которое я передаю функции, частота кадров остается заблокированной на уровне 60, и разрывов нет вообще. Я также проверил настройки композитора в Linux и на панели nvidia, и они не действуют.
Я предполагаю, что это обычная вещь, есть ли способ обойти это ограничение частоты кадров?
glfwSwapInterval(0)
будет программным способом, если вам не нужно переопределять его непосредственно в панели управления драйвером (GPU). - person Brett Hale   schedule 19.05.2018glfwSwapInterval
на 0 или 1 или другое число больше 1 просто включает/отключает его, полностью делая его бесполезным для цели vsync. Однако установка его на 0,5 указывает glfw удвоить ограничение частоты кадров до удвоенной частоты обновления экрана (в моем случае 120 кадров в секунду), а также отключает вертикальную синхронизацию. Итак, что я сделал, чтобы это заработало, так это поэкспериментировал сglfwSwapInterval()
, изменив значение от 0 до 1. Надеюсь, это поможет тем, кто впоследствии найдет эти сообщения. - person Manu   schedule 23.05.2018glfwSwapInterval(0)
, но вызывает эту функцию сразу после вызоваglfwMakeContextCurrent
- person Eugen1344   schedule 18.04.2019