Я пытаюсь выяснить, почему этот предел FPS не работает должным образом на некоторых компьютерах … например, когда я ограничиваю fps до 333, он покажет 250, а на некоторых компьютерах ограничение FPS будет работать очень хорошо (когда ограничение 333 будет работать ограничение 333, а не 250 или любое другое число).
g_nFrameCount++;
DWORD currentTime = timeGetTime();
{
float fFrameLimit = 0;
if (g_nFrameLimitValue > 0)
fFrameLimit = 1000 / g_nFrameLimitValue;
if ((currentTime - g_dwLastTime) < fFrameLimit)
{
Sleep((int)fFrameLimit - (currentTime - g_dwLastTime));
currentTime = timeGetTime();
}
g_dwLastTime = currentTime;
}
if (g_dwLastFPSTime + FPS_INTERVAL<currentTime)
{
g_fFPS = (g_nFrameCount - g_nLastFrameCount)*FPS_INTERVAL / ((float)(currentTime - g_dwLastFPSTime)*(FPS_INTERVAL / 1000));
g_dwLastFPSTime = currentTime;
g_nLastFrameCount = g_nFrameCount;
}
Задача ещё не решена.
Других решений пока нет …