не нужно ждать интервалы времени, это абсурдно и неправильно!
на windows официальный способ через directx 11 (windows 8+)
https://learn.microsoft.com/en-us/windows/uwp/gami...
примеры гуглятся отвратительные включая msdn, но ИИ выдает их в сжатом и понятном виде:
IDXGISwapChain2* swapChain2; // должен быть получен через QueryInterface
swapChain2->SetMaximumFrameLatency(1);
HANDLE hWaitable = swapChain2->GetFrameLatencyWaitableObject();
// основной цикл
for (;;)
{
// ждём, пока можно обновлять кадр
WaitForSingleObjectEx(hWaitable, INFINITE, TRUE);
RenderFrame();
swapChain2->Present(1, 0);
}
p.s. еще есть фича монитора (и соответственно видеокарты) nvidia g-sync и amd freesync но это сугубо внутренняя ведь видеокарты, она меняет время обновления монитора в угоду приложения (т.е. не ты ждешь а тебя) но управлять этим напряму не получится... она включается по команде swapChain->Present(0...); (если 1 то использовать v-sync), лично сам никогда этим не пользовался, в жизни только один раз писал приложение синхронно vsync и это было давно и работало коряво (но это проблема была во времена winxp-win7 сейчас с этим лучше).
сам считаю что g-sync это отвратительная фича в той форме что преподносится... для приятных ощущений fps
должен быть стабильным, и не обязательно бесконечно большим.. после 60Hz начинаются артефакты уже оборудования (дешевое оборудование и тут уже глючит), и только дорогие mid-end и выше мониторы (это от 50т.р. есть дешевле но там другие проблемы) позволяющие в некоторых случаях эту частоту поднять но артефакты будут, их просто не видно невооруженным глазом. Если же постоянно подруливать частотой обновлений, то эта нестабильность будет сразу заметна и создавать ощущение 'тормозов', вынуждая повышать fps что бы это убрать.
Очень небольшой класс игр требует частоты выше 60, а если честно, подавляющему большинству хватит 40 (кто то скажет 30 но там нужно править видеоряд, добавляя смазывание, что создает другие проблемы)... Посмотрите на эти тесты
https://testufo.com/ (не всякое железо в браузере позволит выше 60Hz обновлять но если позволит, рекомендую посмотреть)
g-sync позволит изменить частоту разрешения монитора до требуемой без изменения видеорежима, но на практике в игре в лучшем случае будет выбор 30..60..10500Hz а не число по желанию.
Повторюсь, важна стабильность, любое отклонение от нее воспринимается как тормоза.