C++ OpenGL - Как да получа делта време?

В момента програмирам OpenGL игра на C++, използвайки GLUT, GLEW, SDL и GLM. Опитвам се да завъртя куб с постоянна скорост, но, за съжаление, играта ми зависи от честотата на кадрите. Има ли някакъв начин да получа делта времето?


person romofan23    schedule 16.03.2014    source източник
comment
gamedev.stackexchange.com /questions/13008/   -  person Ivarpoiss    schedule 16.03.2014
comment
Вижте също това stackoverflow.com/questions/1487695 /   -  person Ivarpoiss    schedule 16.03.2014
comment
Пробвах това, но не става.   -  person romofan23    schedule 16.03.2014
comment
Ако не покажете поне някакъв код, тук няма много потенциал за помощ... казвайки, че сте опитали нещо, но не е проработило, не отваря дискусия за възможни проблеми с опита ви за внедряване. Ако можете да редактирате въпроса си, за да включите някакъв код, показващ какво сте опитали, това би било идеално.   -  person Andon M. Coleman    schedule 16.03.2014
comment
Каква версия на C++? C++11 има <chrono>   -  person Basile Starynkevitch    schedule 19.03.2016


Отговори (1)


glutGet(GLUT_ELAPSED_TIME) е възможност, ако използвате GLUT и милисекунди са достатъчни:

void idle(void) {
    int t;
    /* Delta time in seconds. */
    float dt;
    t = glutGet(GLUT_ELAPSED_TIME);
    dt = (t - old_t) / 1000.0;
    old_t = t;
    glutPostRedisplay();
}

void init(void) {
    old_t = glutGet(GLUT_ELAPSED_TIME);
}

И има наносекундни часовници в C11 и C++11, ако имате такива:

person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 19.03.2016