-
обычный использую с задержкой 20мс для вывода "бегущего" графика,но вывод происходит с небольшими рывками видимо изза неравномерных интервалов времени.
вопрос, как сделать "четкий" таймер,без лишней загрузки проца ?
-
> Таймер [D7]
> обычный использую
Это который TTimer что ли ?
Так он в принципе не может обеспечить такое временное разрешение - минимум 50 мс
-
-
> Сергей М. (26.12.2009 19:41:01) [1]
Минимум 10 мс и везение.
-
> Anatoly Podgoretsky (26.12.2009 19:57:03) [3]
Это при условии не изменения кванта, и есть такая легальная возможность уменьшить квант до 1 мс
-
> Anatoly Podgoretsky © (26.12.09 19:57) [3]
Да, это как повезет.
Больше всего не повезет в Win98/Me - там 55 мс и более
-
> Anatoly Podgoretsky ©
Меняй не меняй, а сообщения таймера как имеющие низкий приоритет могут быть просто отброшены если у окна которому они назначаются есть дела поважнее и в нужное время таймер может просто не тикнуть.
-
> Сергей М. (26.12.2009 20:03:05) [5]
Не стоит о грустном, кроме того Win9х не поддерживаемая система.
-
> DVM (26.12.2009 20:08:06) [6]
Я не возражаю
-
> вопрос, как сделать "четкий" таймер,без лишней загрузки
> проца ?
Использовать таймер с вытесняющей многопоточностью.
Создаётся функцией timeSetEvent из библиотеки winmm, и поддерживает теоретически любой квант времени с шагом в одну миллисекунду.
Для удаления таймера пользуй timeKillEvent оттуда же.
-
> timeSetEvent
ясно попробуем
еще уточнение
другой график использует поток со Sleep(20), при этом в Вин7 он также подергивается но в "низших" виндах все гладко
вопрос в Вин7 какието проблемы\изменения с выводом через GDI ?
-
> Егорка (27.12.09 12:47) [10]
что то мне кажется, что причины подергивания совсем иные.
-
Возможно, но человеческий глаз отлично замечает нестабильность и выглядит именно как подергивание.
-
> DVM © (27.12.09 20:51) [11]
тебе не кажется, и дело даже не в таймере, учитывая 9 верхних
-
> Егорка (26.12.09 13:56)
Мне непонятно одно - для кого и для чего предназначен такой бегущий график, что обновления скажем раз в секунду недостаточно? Зачем его обновлять с частотой 30-50 FPS ? Только процессор грузить.
-
> DVM © (27.12.09 22:48) [14]
>
>
> > Егорка (26.12.09 13:56)
>
> Мне непонятно одно - для кого и для чего предназначен такой
> бегущий график, что обновления скажем раз в секунду недостаточно?
> Зачем его обновлять с частотой 30-50 FPS ?
А при чём тут FPS?
-
> А при чём тут FPS?
А что еще может грузить? Громадный астрономический просчет полученной данной?
Как показывает практика, просчет графики и вывод графики по ресурсоемкости 1:9 соответственно.
Ну, это конечно, исходя от нормального программирования.
-
> Германн © (28.12.09 01:45) [15]
> А при чём тут FPS?
FPS = Frames per second потому что вероятно. У него таймер на 20 мс - это значит что таймер отрабатывает 50 раз в секунду если повезет и следовательно 50 раз в секунду он обновит картинку.
-
> DVM © (28.12.09 08:33) [17]
А глаз-то различает 24
:)))
-
> oldman © (28.12.09 09:23) [18]
это один глаз. Обычно, у людей два глаза. значит, 48.
-
у японцев - 4 глаза. Поэтому они первые начали выпускать телевизоры 100гц.
-
> oldman (28.12.2009 09:23:18) [18]
> глаз не различает 24 и даже 12
-
> KilkennyCat (28.12.2009 09:35:20) [20]
У них глаза особые.
-
> У них глаза особые.
чем уже глаз, тем больше его разрешающая способность?
-
> clickmaker (28.12.2009 11:45:23) [23]
Только 100 герцами можно пробить.
Вообще то не шучу, тонер для цветных принтеров делают с пометко для Азии, для Европы.
-
> clickmaker © (28.12.09 11:45) [23]
ты плохо учил физику. где вода быстрее движется, в толстой части трубы или в тонкой?
-
> Anatoly Podgoretsky © (28.12.09 12:04) [24]
Кстати из-за узких глаз именно.
-
> Зачем его обновлять с частотой 30-50 FPS ? Только процессор
> грузить.
не грузица вообще ,т.е. 0% по диспечеру, даже на олдовом компе
> что то мне кажется, что причины подергивания совсем иные.
я тоже думаю об этом , и почему именно в Вин7, а в старых нет
таймер то дергается видимо изза неравномерности тиков,а поток почему?
и даже не дергается а какбы тормозит\подвисает
рисуется на битмапе в памяти, выводится через Synchronize и Btblt
-
> чем уже глаз, тем больше его разрешающая способность?
тогда уж, замечающая способность.
> таймер то дергается видимо изза неравномерности тиков,а поток почему?
знаешь, если и были какие то сомнения до этого, то этой фразой ты все их развеял... делаю ставку на твой код, как на основную причину.
-
Битва экстрасенсов. Литвин нервно курит, ожидая очередного поражения
-
Сталкивался с подобной проблемой решил довольно просто:
1. Создаю поток в котором просто считываю системное время с помощью функции TimeGetTime и проверяю время вышло или нет.