Как заставить программу использовать CPU только по мере небходимости?
Как он, например, узнаёт, нажата ли кнопка? Для этого надо выполнять цикл как можно чащеКак вы узнаёте утром, что надо просыпаться и идти на работу или в школу? Для этого надо всю ночь смотреть на часы как можно чаще. :)
А можно просто "сказать" будильнику (или родственникам), чтобы разбудили в нужное время. Вот так и программа доверяет операционной системе "разбудить" её, когда кто-то нажмёт на кнопку. А пока никто не нажал, программа спит и не тратит ресурсы.
Операционная система в любом случае знает обо всех нажатиях кнопок и обо всех движениях мыши, она решает, какой программе передать эти нажатия или движения, т.е. какую программу нужно разбудить сейчас. Как только программа обработает событие, она снова уснёт, если больше нечего обрабатывать.
Нашол, нужно использовать glfwWaitEvents(); и всего делов. И вынести это дело в отдельный поток. Абсолютно гениальная система.