Игровой таймер C OpenGL

#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. большое спасибо за пример, мне нужно будет подробнее изучить эти функции