Старый 14.05.2008, 16:19   #1   
Registered User
 
Сообщений: 101
Регистрация: 21.03.2005

zolo вне форума Не в сети
Высокоточный таймер (C/C++ & Linux)

Такая вот проблема: нужен код высокоточного таймера. Желательно на С/С++.
ЗЫ: для написания игрового движка.
  Ответить с цитированием
Старый 15.05.2008, 00:32   #2   
Форумец
 
Аватар для The_God
 
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 44

The_God вне форума Не в сети
а че с обычным TimeGetTime fps скачет ? так вазми 100 его значений последних да и усредни, и будет тебе счастье локальное, и вабще это не та задача в написании движка изза которой стоит так парится и лесть на форум конечно это если не единственная функция движка считать свой fps.
  Ответить с цитированием
Старый 15.05.2008, 10:39   #3   
Форумец
 
Аватар для xxx-men
 
Сообщений: 1,144
Регистрация: 18.09.2006
Возраст: 42

xxx-men вне форума Не в сети
Цитата:
Сообщение от The_God Посмотреть сообщение
а че с обычным TimeGetTime..
ды ему вроде как под линукс надо...

Цитата:
Сообщение от The_God Посмотреть сообщение
fps скачет ? так вазми 100 его значений последних да и усредни
это не лечение, а замазывание симптомов...
  Ответить с цитированием
Старый 15.05.2008, 11:18   #4   
Форумец
 
Аватар для xxx-men
 
Сообщений: 1,144
Регистрация: 18.09.2006
Возраст: 42

xxx-men вне форума Не в сети
zolo, datetime.mp3 это zip файл, возможно тут что то будет...
  Ответить с цитированием
Старый 15.05.2008, 15:17   #5   
Registered User
 
Сообщений: 101
Регистрация: 21.03.2005

zolo вне форума Не в сети
xxx-men, спасибо, посмотрю

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

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

Да, все таки информации о кодинге игр для винды реально много, а вот под линукс - проблема..
  Ответить с цитированием
Старый 15.05.2008, 15:35   #6   
Форумец
 
Аватар для xxx-men
 
Сообщений: 1,144
Регистрация: 18.09.2006
Возраст: 42

xxx-men вне форума Не в сети
Цитата:
Сообщение от zolo Посмотреть сообщение
Думаю вот в OGRE в исходниках посмотреть как они реализовали это.
самый простой способ походу....
  Ответить с цитированием
Старый 15.05.2008, 23:46   #7   
Форумец
 
Аватар для The_God
 
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 44

The_God вне форума Не в сети
Цитата:
Сообщение от xxx-men Посмотреть сообщение
ды ему вроде как под линукс надо...
это не лечение, а замазывание симптомов...
игры это обман, желательно чтобы это был красивый обман.

ps вы замечали что внутри модели главного героя нет мозга ?
  Ответить с цитированием
Старый 16.05.2008, 00:04   #8   
Форумец
 
Аватар для The_God
 
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 44

The_God вне форума Не в сети
ладно, раскажи для чего тебе точность то такая нужна ? мож движок надо писать а не заморачиваться по ерунде ? эт я так.. просто вот думаю .. зачем ну там длительность кадра посчитать.. этож то что я написал про среднее значение этого заглаза хватит.

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

огр кстати не движок, а просто рендерилка, причем тормозная шопипец
  Ответить с цитированием
Старый 16.05.2008, 08:02   #9   
Форумец
 
Аватар для xxx-men
 
Сообщений: 1,144
Регистрация: 18.09.2006
Возраст: 42

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

Цитата:
Сообщение от The_God Посмотреть сообщение
этож то что я написал про среднее значение этого заглаза хватит.
хватит, но нету в линуксах timeGetTime(), (как я думаю)
не нужна ему атомная точность, милисекунд достаточно, чел просто задал вопрос "как померить время в линуксах?"
  Ответить с цитированием
Старый 16.05.2008, 08:22   #10   
Registered User
 
Сообщений: 101
Регистрация: 21.03.2005

zolo вне форума Не в сети
The_God, ды я и не замарачиваюсь, пишу пока другие части, просто знааю что время придет и до таймера.. решу сейчас эту проблему - при написании таймера не надо будет время терять.
  Ответить с цитированием
Старый 16.05.2008, 13:30   #11   
Форумец
 
Аватар для The_God
 
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 44

The_God вне форума Не в сети
Цитата:
Сообщение от xxx-men Посмотреть сообщение
The_God, то есть, ты утверждаеш что, в игровом движке знать время совсем не нужно?
я немоного другое сказал
Цитата:
Сообщение от The_God Посмотреть сообщение
вазми 100 его значений последних да и усредни
этого достаточно для
Цитата:
Сообщение от xxx-men Посмотреть сообщение
а еще бывают анимации когда одна картинка плавно переходит в другую (чем не фишка движка?)...
а еще бывает физика.....
а еще ......
значит она подругому называется, rtfm по линуху
  Ответить с цитированием
Старый 16.05.2008, 22:58   #12   
Форумец
 
Сообщений: 2,159
Регистрация: 15.01.2003

Akad вне форума Не в сети
zolo,Для начал может пойти RDTSC. Хотя на буках будет давать некую ээээ.... погрешность.
А вообще в линухе ТОЧНО есть аналог QueryPerfomanceCounter. На вскидку не помню, гуглить надо.
P.S. Если у тебя возникают такие простейшие вопросы, то подумай, может быть тебе рано еще писать игровой движок? Тем более под линукс. Под совершенно не игровую платформу?
  Ответить с цитированием
Старый 17.05.2008, 02:21   #13   
Форумец
 
Аватар для xxx-men
 
Сообщений: 1,144
Регистрация: 18.09.2006
Возраст: 42

xxx-men вне форума Не в сети
Цитата:
Сообщение от Akad Посмотреть сообщение
А вообще в линухе ТОЧНО есть аналог QueryPerfomanceCounter
обязательно дожно что-то быть..

Цитата:
Сообщение от Akad Посмотреть сообщение
Тем более под линукс. Под совершенно не игровую платформу?
ды поидее разницы нет, только под винду инфу больше...
и еще , пАчИмУ линуксы не игровая платформа, opengl вродебы никто не отменял...
  Ответить с цитированием
Старый 17.05.2008, 07:13   #14   
Registered User
 
Сообщений: 101
Регистрация: 21.03.2005

zolo вне форума Не в сети
Akad,
Цитата:
P.S. Если у тебя возникают такие простейшие вопросы
Простейший вопрос, но пока никто не ответил.. между прочим не только на этом форуме.
  Ответить с цитированием
Старый 17.05.2008, 08:08   #15   
EbayHelpToU
 
Аватар для Dimbass
 
Сообщений: 1,721
Регистрация: 25.12.2006
Возраст: 36

Dimbass вне форума Не в сети
zolo, можт я не шарю, и подскажите если вдруг чо не так, а Cron разве не подойдёт?
  Ответить с цитированием
Старый 17.05.2008, 09:16   #16   
Registered User
 
Сообщений: 101
Регистрация: 21.03.2005

zolo вне форума Не в сети
Dimbass, cron — демон-планировщик задач в UNIX-образных операционных системах, использующийся для периодического выполнения заданий в заданное время.
А мне нужно самому реализовать в своем коде таймер, ды и тем более у крона точность до минуты.
  Ответить с цитированием
Старый 17.05.2008, 09:52   #17   
IGBT
 
Аватар для Pengvin
 
Сообщений: 534
Регистрация: 09.10.2005

Pengvin вне форума Не в сети
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);
}
  Ответить с цитированием
Старый 17.05.2008, 10:41   #18   
Registered User
 
Сообщений: 101
Регистрация: 21.03.2005

zolo вне форума Не в сети
Pengvin,
temp.c: In function ‘main’:
temp.c:8: error: storage size of ‘tz’ isn’t known

Вообщем не компилируется
  Ответить с цитированием
Старый 17.05.2008, 10:49   #19   
Форумец
 
Аватар для The_God
 
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 44

The_God вне форума Не в сети
Цитата:
Сообщение от zolo Посмотреть сообщение
ростейший вопрос, но пока никто не ответил..
я ответил

более того такой способ используется в зарелизиних коммерческих играх как минимум в 2 так что утверждать что он не работает низя
  Ответить с цитированием
Старый 17.05.2008, 11:55   #20   
IGBT
 
Аватар для Pengvin
 
Сообщений: 534
Регистрация: 09.10.2005

Pengvin вне форума Не в сети
zolo, вобщем надо было #include <sys/time.h> добавить. man gettimeofday
  Ответить с цитированием
Старый 17.05.2008, 12:23   #21   
Registered User
 
Сообщений: 101
Регистрация: 21.03.2005

zolo вне форума Не в сети
Pengvin, понятно теперь.
Спасибо.
Я добавлял просто #include <time.h>
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind