2013-04-05 7 views
1

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

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

определить «не работает» –

+0

Что происходит, моя анимация нарисована все вместе. Что я хочу, это нужно сделать, а затем затянуть, а затем нарисовать другую. – user1733735

ответ

4

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

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

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

+0

можете ли вы отправить пример для этого. – user1733735

+0

Итак, вы в основном хотите, чтобы ваш код был написан для вас, @ user1733735 –

+0

@ user1733735: Для написания кода в каком-то примере вам потребуется знать, какая среда выполнения вы используете. Как создать контекст OpenGL? Какие рамки вы используете? Какова общая структура вашей программы. – datenwolf