Я создал программу (на C ++, использующую gl / glut) для учебных целей, где вы можете бегать вокруг экрана (от первого лица), и в нем есть несколько твердых тел по сцене. Я попытался запустить его на другом компьютере, и скорость была совершенно другой, поэтому я искал предмет, и в настоящее время я делаю что-то вроде этого:
Функция холостого хода:
start = glutGet (GLUT_ELAPSED_TIME);
double dt = (start-end)*30/1000;
<all the movement*dt>
glutPostRedisplay ();
end = glutGet (GLUT_ELAPSED_TIME);
Функция отображения:
<rendering for all objects>
glutSwapBuffers ();
Мой вопрос: это правильный способ сделать это? Сцена отображается после функции ожидания, верно?
Я попытался поместить end = glutGet (GLUT_ELAPSED_TIME) перед glutSwapBuffers () и не заметил каких-либо изменений, но когда я помещаю его после glutSwapBuffers (), оно сильно замедляется и иногда даже останавливается.
РЕДАКТИРОВАТЬ: Я только что заметил, что, как я думаю, конечный запуск должен заканчиваться временем, прошедшим с того момента, как все рисование было выполнено, и до обновления движения, так как idle () будет вызван, как только display () заканчивается, так что правда, что единственное время, которое здесь не учитывается, - это время, которое требуется компьютеру для выполнения всех операций? (Что должно быть едва ли ничем?)
Извините, если это слишком запутанно ..
Заранее спасибо.