3주 전 · Jul 27, 2026 2:14 PM
Standard Sleep(1) in Win32 has a resolution of 1-15ms which causes jittery 144Hz overlay rendering.
Hybrid Precision Frame Limiter:
CPP
void LimitFrameRate(double targetFps) {
static LARGE_INTEGER freq, lastTime;
static bool init = false;
if (!init) { QueryPerformanceFrequency(&freq); QueryPerformanceCounter(&lastTime); init = true; }
double targetDelta = 1.0 / targetFps;
LARGE_INTEGER currentTime;
QueryPerformanceCounter(¤tTime);
double elapsed = (double)(currentTime.QuadPart - lastTime.QuadPart) / freq.QuadPart;
while (elapsed < targetDelta) {
if (targetDelta - elapsed > 0.002) {
Sleep(1); // Coarse sleep to yield CPU
} else {
YieldProcessor(); // Fine spinwait for last 2ms
}
QueryPerformanceCounter(¤tTime);
elapsed = (double)(currentTime.QuadPart - lastTime.QuadPart) / freq.QuadPart;
}
lastTime = currentTime;
}Delivers rock-solid 144.00 FPS with 0.05ms frame-time variance!