Воспроизведение анимации в OpenGL

Просто хочу поставить задержку в несколько микросекунд, чтобы я мог видеть мои анимации. Функция задержки не работает. Я использую fltk, поэтому все, что с этим также может помочь.

for(i = 0; i < 1; i = i + 0.1)
{
glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();
glTranslatef(i,i,1);
glRotatef(spin, 0, 0, 1);
delay(1000);
glScalef(i,i,i);
glutWireCube(1);
}

1

Решение

Вы не воспроизводите анимации таким образом в OpenGL (технически вы можете поместить SwapBuffers в конец цикла, но это не очень хорошая идея).

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

Никогда(!) запустить цикл, в котором вы добавляете сон или подобное. Такой код не реагирует на внешние события, и современная ОС будет считать программы, ведущие себя так, как не отвечающие / зависшие, и покажет пользователю окно сообщения, позволяющее убить программу. Это не то, что вы хотите.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]