Текущий архив: 2009.08.16;
Скачать: CL | DM;
Вниз
Таймер Найти похожие ветки
← →
Дима (2009-06-18 15:40) [0]Как правильно сделать таймер на API?
Я делаю так
procedure glDraw();
///////////////////////////////////////////////////////////////////////
TGT0:=timeGetTime- startTime0;
delta0:= tgt0/10*1;
if delta0 >1 then begin
modeltimer[0]:=modeltimer[0]+1;
delta0:=0;
startTime0:=timeGetTime();
end;
end;
Но в таком таймере переменная modeltimer[0]
увеличивается очень медленно, а мне нужно
быстрее.
← →
Сергей М. © (2009-06-18 16:00) [1]Какой период "тиканья" требуется получить ?
← →
Дима (2009-06-18 16:09) [2]Ну мне неважно какой период.
Нужно только чтоб переменная modeltimer[0]
увеличивалась или уменьшалась на 1
быстрее.
← →
Сергей М. © (2009-06-18 16:14) [3]
> мне неважно какой период
Очуметь)
Т.е., тебе, к примеру, фиолетово с какой скоростью крутится секундная стрелка твоих часов, отсчитывая "секунды" ?
Главное чтобы крутилась и желательно побыстрей ?)
Тогда с какого боку тут объявились функции мультимедиа-таймера ?
> Нужно только чтоб переменная modeltimer[0]
> увеличивалась или уменьшалась на 1
> быстрее.
Тогда убери всю эту лабуду, оставь только одну строчку
modeltimer[0]:=modeltimer[0]+1;
Быстрее уж некуда)
← →
Дима (2009-06-18 16:26) [4]Тогда на другом компе, у которого процессор
лучше сложение будет очень быстрым и модель
будет вращаться как сумашедшая.
← →
Сергей М. © (2009-06-18 16:53) [5]Так я ж тебя и спрашиваю - какой конкретно период требуется обеспечить ?
От этого и решение зависит)..
Для классической киношной анимации, если о ней идет речь, достаточно 24 кадра в секунду, т.е. период = 1/24 сек
Тебя устраивает такая цифирь ?
← →
Дима (2009-06-18 17:05) [6]Да.
← →
Сергей М. © (2009-06-18 17:27) [7]Тебе процедуру типа delay что ли нужно следать, которая задерживала выполнениа программы на 1/24 секунды ?
← →
Б (2009-06-18 17:36) [8]> delta0:= tgt0/10*1;
Зачем домножаешь на единицу?
Хочешь быстрее - бери знаменатель помешьше... ;)
← →
Дима (2009-06-18 19:46) [9]Я уменшал delta и tgt но скорость тиканья не сильно уменьшается.
Похоже, что изменить скорость монжно, только
поменяв modeltimer[0]:=modeltimer[0]+1; на
modeltimer[0]:=modeltimer[0]+5;
← →
Сергей М. © (2009-06-18 20:52) [10]Никаким "тиканьем" в твоей процедуре даже не пахнет, хоть миллион к modeltimer[0] прибавь.
На вопрос в [7] соизволишь ответить ?
← →
Дима (2009-06-18 22:09) [11]Про задержку?
Зачем мне задерживать программу? у меня
простая игра на opengl.
← →
Б (2009-06-18 22:32) [12]Вообще из твоего кода ничего не понятно. "Што... Пашто..."
Код в студию.
← →
Дима (2009-06-18 22:46) [13]Я раньше думал, что ето таймер.
Теперь сам не знаю , что ето.
← →
Б (2009-06-18 23:15) [14]Вылаживай код.
А то этот "кусок" ни о чём не говорит.
← →
Дима (2009-06-19 00:31) [15]init
startTime0:=timeGetTime();
delta0:=0;
modeltimer[0]:=0;
...........................
procedure glDraw();
TGT0:=timeGetTime- startTime0;
delta0:= tgt0/10*1;
if delta0 >1 then begin
modeltimer[0]:=modeltimer[0]+1;
delta0:=0;
startTime0:=timeGetTime();
end;
end;
весь код. переменная modeltimer[0] увеличивается
через одинаковые промежутки времени со скоростью tgt0/10*1
← →
Сергей М. © (2009-06-19 08:42) [16]А где и как вызывается glDraw() ?
← →
Дима (2009-06-19 22:34) [17]А функцию SetTimer(h_Wnd, 1, 1000, nil) как использовать?
Например, я нажимаю кнопку "вверх" включается таймер
и нужно отсчитать 1(2,3,4) секунды.
← →
Сергей М. © (2009-06-22 17:42) [18]На вопрос [16] соизволишь ответить ?
Страницы: 1 вся ветка
Текущий архив: 2009.08.16;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.019 c