Большой Воронежский Форум
» Программирование>Высокоточный таймер (C/C++ & Linux)
zolo 16:19 14.05.2008
Такая вот проблема: нужен код высокоточного таймера. Желательно на С/С++.
ЗЫ: для написания игрового движка. [Ответ]
The_God 00:32 15.05.2008
а че с обычным TimeGetTime fps скачет ? так вазми 100 его значений последних да и усредни, и будет тебе счастье локальное, и вабще это не та задача в написании движка изза которой стоит так парится и лесть на форум конечно это если не единственная функция движка считать свой fps. [Ответ]
xxx-men 10:39 15.05.2008

Сообщение от The_God:
а че с обычным TimeGetTime..

ды ему вроде как под линукс надо...

Сообщение от The_God:
fps скачет ? так вазми 100 его значений последних да и усредни

это не лечение, а замазывание симптомов... [Ответ]
xxx-men 11:18 15.05.2008
zolo, datetime.mp3 это zip файл, возможно тут что то будет...
Изображения
[Ответ]
zolo 15:17 15.05.2008
xxx-men, спасибо, посмотрю

The_God, вообще таймер мне нужен не только fps считать.. Кстати, вопрос задал на 3-х форумах и ответа пока не нашел. Думаю вот в OGRE в исходниках посмотреть как они реализовали это.

Нашел 4 функции (sleep, usleep, select и nanosleep), но они всего лишь предлагают откладывание процессов на время, не то..

Да, все таки информации о кодинге игр для винды реально много, а вот под линукс - проблема.. [Ответ]
xxx-men 15:35 15.05.2008

Сообщение от zolo:
Думаю вот в OGRE в исходниках посмотреть как они реализовали это.

самый простой способ походу.... [Ответ]
The_God 23:46 15.05.2008

Сообщение от xxx-men:
ды ему вроде как под линукс надо...
это не лечение, а замазывание симптомов...

игры это обман, желательно чтобы это был красивый обман.

ps вы замечали что внутри модели главного героя нет мозга ? [Ответ]
The_God 00:04 16.05.2008
ладно, раскажи для чего тебе точность то такая нужна ? мож движок надо писать а не заморачиваться по ерунде ? эт я так.. просто вот думаю .. зачем ну там длительность кадра посчитать.. этож то что я написал про среднее значение этого заглаза хватит.

хотя можно конечно придумать проблему, а потом мужественно её решать, это твой путь ? или ты всётаки движок пишиш ?


огр кстати не движок, а просто рендерилка, причем тормозная шопипец
[Ответ]
xxx-men 08:02 16.05.2008
The_God, то есть, ты утверждаеш что, в игровом движке знать время совсем не нужно?
запусти первый warcraft, там наглядно увидиш зачем нужно на время смотреть....
а еще бывают анимации когда одна картинка плавно переходит в другую (чем не фишка движка?)...
а еще бывает физика.....
а еще ......

Сообщение от The_God:
этож то что я написал про среднее значение этого заглаза хватит.

хватит, но нету в линуксах timeGetTime(), (как я думаю)
не нужна ему атомная точность, милисекунд достаточно, чел просто задал вопрос "как померить время в линуксах?"
[Ответ]
zolo 08:22 16.05.2008
The_God, ды я и не замарачиваюсь, пишу пока другие части, просто знааю что время придет и до таймера.. решу сейчас эту проблему - при написании таймера не надо будет время терять. [Ответ]
The_God 13:30 16.05.2008

Сообщение от xxx-men:
The_God, то есть, ты утверждаеш что, в игровом движке знать время совсем не нужно?

я немоного другое сказал

Сообщение от The_God:
вазми 100 его значений последних да и усредни

этого достаточно для

Сообщение от xxx-men:
а еще бывают анимации когда одна картинка плавно переходит в другую (чем не фишка движка?)...
а еще бывает физика.....
а еще ......

значит она подругому называется, rtfm по линуху [Ответ]
Akad 22:58 16.05.2008
zolo,Для начал может пойти RDTSC. Хотя на буках будет давать некую ээээ.... погрешность.
А вообще в линухе ТОЧНО есть аналог QueryPerfomanceCounter. На вскидку не помню, гуглить надо.
P.S. Если у тебя возникают такие простейшие вопросы, то подумай, может быть тебе рано еще писать игровой движок? Тем более под линукс. Под совершенно не игровую платформу? [Ответ]
xxx-men 02:21 17.05.2008

Сообщение от Akad:
А вообще в линухе ТОЧНО есть аналог QueryPerfomanceCounter

обязательно дожно что-то быть..

Сообщение от Akad:
Тем более под линукс. Под совершенно не игровую платформу?

ды поидее разницы нет, только под винду инфу больше...
и еще , пАчИмУ линуксы не игровая платформа, opengl вродебы никто не отменял... [Ответ]
zolo 07:13 17.05.2008
Akad,

Сообщение от :
P.S. Если у тебя возникают такие простейшие вопросы

Простейший вопрос, но пока никто не ответил.. между прочим не только на этом форуме. [Ответ]
Dimbass 08:08 17.05.2008
zolo, можт я не шарю, и подскажите если вдруг чо не так, а Cron разве не подойдёт? [Ответ]
zolo 09:16 17.05.2008
Dimbass, cron — демон-планировщик задач в UNIX-образных операционных системах, использующийся для периодического выполнения заданий в заданное время.
А мне нужно самому реализовать в своем коде таймер, ды и тем более у крона точность до минуты. [Ответ]
Pengvin 09:52 17.05.2008
http://tldp.org/HOWTO/IO-Port-Programming-4.html
выдержка из статьи

Сообщение от :
For times accurate to one second, it is probably easiest to use time(). For more accurate times, gettimeofday() is accurate to about a microsecond (but see above about scheduling).

набросал примерчик:

int main()
{
struct timeval tv1,tv2;
struct timezone tz;
int p=gettimeofday(&tv1,&tz);
int i;
for (i=0;i>=50000000000000;i++)
{
asm("nop\n");
}
gettimeofday(&tv2,&tz);
printf("Errors: %d\nmicroseconds: %d\n",p,tv2.tv_usec-tv1.tv_usec);
} [Ответ]
zolo 10:41 17.05.2008
Pengvin,
temp.c: In function ‘main’:
temp.c:8: error: storage size of ‘tz’ isn’t known

Вообщем не компилируется [Ответ]
The_God 10:49 17.05.2008

Сообщение от zolo:
ростейший вопрос, но пока никто не ответил..

я ответил

более того такой способ используется в зарелизиних коммерческих играх как минимум в 2 так что утверждать что он не работает низя [Ответ]
Pengvin 11:55 17.05.2008
zolo, вобщем надо было #include <sys/time.h> добавить. man gettimeofday [Ответ]
zolo 12:23 17.05.2008
Pengvin, понятно теперь.
Спасибо.
Я добавлял просто #include <time.h> [Ответ]
Вверх