И вот, разбираясь что к чему и получив ограничение которое искал, я обнаружил, что очень сильно стал загружаться процессор, аж до 25%... в чём же дело? И стал ковырять код дальше, сначала подумав, что может где-то не то наковырял...
Так вот, слишком долгое вступление.

Описываю внутренний цикл, в котором идёт опрос самой системы PeekMessageW и зачастую после этого опроса заставляют работать саму программу.
Итак, опросили систему и запустили свой цикл
- Код: Выделить всё
var
newTime, oldTime: Double;
maxFPS: single = 1000 / 30; // 30 FPS - ограничиваем
...
if winON then
begin
if PeekMessage(...) then
begin
TranslateMessage(msg);
DispatchMessage(msg);
end
else begin // основной опрос вашей программы
newTime := GetTickCount;
// выставляем (проверяем) ограничение
if newTime >= oldTime + maxFPS then
begin
Draw(); // стандартная работа программы
oldTime := oldTime + maxFPS;
...
end
// и вот тут код, который вдруг разгружает систему почти в нуль,
else
Sleep(1);
end;
end;
...
Я не знаю, знают об этом или нет, но я ни где не видел, чтоб так можно было разгрузить систему. Получается, если мы не прорисовываем ни чего, то заставляем процессор выждать милисекунду.
Это вообще правильно?
P.S. нашёл ошибку, исправил )))) в том коде что выложил.
P.P.S. Касается в основном Windows.