#c #timer
#c #таймер
Вопрос:
Я пытаюсь создать простую игру, используя C и OpenGL, и я не смог найти никаких хороших руководств по созданию простого тика или системы таймера для игры, я также хотел бы использовать небольшие внешние библиотеки, насколько это возможно. Любая помощь приветствуется. Я использую Win32 и C:: B IDE … MinGW-совместитель.
Комментарии:
1. Code::Blocks, кстати, не является компилятором., это IDE.
Ответ №1:
Вы пробовали:
void glutTimerFunc( unsigned int msecs, void (*func)(int value), value);
Ответ №2:
Проверьте эти страницы:
http://wiki .allegro.cc/index.php?title=Timers#How_to_use_them.3F
http://www.koonsolo.com/news/dewitters-gameloop/
Возможно, вы сможете получить больше ответов на Gamedev Stackexchange.
Комментарии:
1. Аааа, спасибо за вашу помощь … последние ссылки на будут бесценны
Ответ №3:
Взгляните на boost::date_time
.
Ответ №4:
Вы могли бы попробовать QueryPerformanceCounter и QueryPerformanceFrequency, если хотите, чтобы он был сверхточным.
Редактировать: Я думаю, что документов вполне достаточно, вы получаете количество тактов таймера и частоту таймера. Но в любом случае, вот пример:
Не тестировался, но должен дать вам представление.
int main(int argc, char *argv[])
{
LARGE_INTEGER freq;
LARGE_INTEGER start;
LARGE_INTEGER current;
double t;
QueryPerformanceFrequency(amp;freq); // initialize frequency
QueryPerformanceCounter(amp;start); // initialize start time
while (!terminated) // game main loop
{
QueryPerformanceCounter(amp;current); // get current time
t = (end.QuadPart - start.QuadPart) / (double)freq.QuadPart; // transform to seconds
/* do stuff here with t */
}
return 0;
}
Вы также могли бы использовать любой 64-разрядный целочисленный тип вместо LARGE_INTEGER
, но они так и предполагали.
Комментарии:
1. большое спасибо за пример, мне нужно будет подробнее изучить эти функции