c ++ opengl: sleep () не влияет на glutPostRedisplay () во время анимации - PullRequest
0 голосов
/ 12 декабря 2011

У меня на экране нарисована сфера. Когда я нажимаю кнопку, я хочу, чтобы сфера медленно двигалась вправо. Я пытаюсь сделать это с помощью

for (int i = 0;i<10;i++)
{
sphere.moveToRight(0.1);
glutPostRedisplay();
sleep(1000);
}

Но вместо анимации он ждет несколько секунд, а затем рисует сферу в окончательном месте. Я предполагаю, что это потому, что сон останавливает glutPostRediplay (). Любые идеи о том, как выполнить эту базовую анимацию?

1 Ответ

2 голосов
/ 12 декабря 2011

Вы используете glutPostRedisplay неправильно.

Проверить: http://www.opengl.org/resources/libraries/glut/spec3/node20.html

glutPostRedisplay помечает нормальную плоскость текущего окна как нужную для повторного отображения.glutPostWindowRedisplay работает с указанным окном как нужное для повторного отображения.После любого вызова, следующей итерации по glutMainLoop, будет вызван обратный вызов отображения окна, чтобы снова отобразить нормальную плоскость окна.Несколько вызовов glutPostRedisplay до следующей возможности обратного вызова дисплея генерируют только один обратный вызов повторного отображения.glutPostRedisplay может вызываться в обратном вызове дисплея или наложения экрана, чтобы пометить это окно для повторного отображения.

Это означает, что через 10 секунд ваше изображение будет обновлено один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...