Главный цикл примерно так выглядит?
QueryPerformanceFrequency(qFreq)
QueryPerformanceCounter(qStart)
QueryPerformanceCounter(qStart) ' bug fix for INTEL chipsets
WHILE run 'GetMessage(uMsg, %NULL, 0, 0) ' Message loop
WHILE peekMessage(uMsg, 0, 0, 0,%PM_REMOVE) ' Message loop
translateMessage uMsg
DispatchMessage uMsg
WEND
DIALOG DOEVENTS 0
CALL KeybMouse
CALL Physics
CALL GameRender
QueryPerformanceCounter(qStop)
dt = (qStop - qStart)/ qFreq
fps=1/dt
QueryPerformanceCounter(qStart)
WEND
Вроде оптимально?