Просто хочу поставить задержку в несколько микросекунд, чтобы я мог видеть мои анимации. Функция задержки не работает. Я использую 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);
}
Вы не воспроизводите анимации таким образом в OpenGL (технически вы можете поместить SwapBuffers в конец цикла, но это не очень хорошая идея).
Что вы должны сделать, это реализовать обработчик простоя, который выдает перерисовку при вызове. В функции рисования вы должны рассчитывать время между вызовами функции отображения, чтобы увеличить анимацию на эту величину.
Никогда(!) запустить цикл, в котором вы добавляете сон или подобное. Такой код не реагирует на внешние события, и современная ОС будет считать программы, ведущие себя так, как не отвечающие / зависшие, и покажет пользователю окно сообщения, позволяющее убить программу. Это не то, что вы хотите.
Других решений пока нет …