Как в Visual C++ сделать точный таймер, для того чтобы выполнять какое-то действие раз в секунду, только так, чтоб никаких задержек не был и всё происходило действительно раз в секунду? Можно для этого использовать информацию о изменении системного времени или ещё как?
http://www.medievalage.ru/?242561934773
*Свет* - клан , клан ЛИ.Ру.
Вступай в ряды света !!!
------------------------------
а для общения и дружбы наше сообщество ,
открыто для всех !!!
==============================
..........
Самое лучшее что я нашел - это timeSetEvent()...
tm=timeSetEvent(TimeToWait,0,(LPTIMECALLBACK)hst->m_hE,NULL,TIME_CALLBACK_EVENT_PULSE|TIME_ONESHOT);
ASSERT(tm!=NULL);
DWORD res=WaitForSingleObject(hst->m_hE, 2*hst->m_Interval);
Все остальные подходы заедают слишком много времени, или недостаточно точны... Для более точного определения, можно уточнять интервал с помощью системного таймера, как это рекомендуют в предыдущем сообщении...
Используя эту технику, мне удается при перерисовке попасть точно в вертикальный бланк дисплея...
в виндовсе есть ещё мультимедиа таймер (мб в ядре, мб в OpenGL, вот точно не помню, но про него читал в книжке про OpenGL), точность порядка 2 мс. у обычного таймера (что приведён выше) точность порядка 50 мс. (цифры привожу на память, могу ошибаться)
LI 5.09.15