приостановить функцию на некоторое время в OpenGL - PullRequest
0 голосов
/ 01 апреля 2011

У меня есть функция Drwa (), которая отображает треугольник на экране, а также у меня есть другая Draw_poly (), которая отображает прямоугольник на экране.И я также вращаю прямоугольник и треугольник одновременно. Я хочу, чтобы скорость вращения была разной для обоих, как я буду это делать?

Предположим, я двигаю объект на экране, а другой я вращаюсь, тогда как я буду делать?Вот почему поиск функции перемещения объекта будет ограничивать время, а вращающийся объект не будет ограничивать время. Поэтому вращение будет быстрым, а движение объекта будет медленным

Ответы [ 3 ]

2 голосов
/ 02 апреля 2011

Сначала определите ваш угол поворота в секунду. Затем в основной функции отрисовки вычислите прошедшее время в секундах, умножьте на угловую скорость, и все готово.

0 голосов
/ 06 апреля 2011

Я бы хотел поучаствовать в ответе на мой вопрос.

Ответ genpfault может быть достаточным, если вам нужно, но если вы хотите создать хорошую анимацию, вам нужно разработать более качественное программное обеспечение.

Здесь , посмотрите на мой ответ. Однако, читая другой ваш вопрос , я думаю, что вы упускаете какой-то фундаментальный момент: изучите архитектуру OpenGL, попрактикуйтесь в каждой точке входа OpenGL, прочитайте книги.

Наконец, но не в последнюю очередь, я бы предложил вам поискать ответ, уже сказанный в stackoverflow . Это должен быть вопрос и ответ сайт ...

0 голосов
/ 02 апреля 2011

Поворот на один меньше / медленнее, чем на другой:

static float rot_a = 0.0;
static float rot_b = 0.0;

rot_a += 1.0;
rot_b += 0.5;

glPushMatrix();
glRotatef( rot_a, 0, 0, 1 );
Draw_A();
glPopMatrix();

glPushMatrix();
glRotatef( rot_b, 0, 0, 1 );
Draw_B();
glPopMatrix();

В качестве альтернативы вы можете раскрутить некоторые потоки, которые изменяют ваши позиции объекта, и sleep() без блокировки потока рендеринга.

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