2013-04-05 153 views
1

只想放幾個microsec的延遲,這樣我就可以看到我的動畫了。延遲功能不起作用。我使用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

定義「不工作」 – 2013-04-05 22:43:29

+0

發生什麼事是我的動畫畫在一起。我想要的是它應該畫一個然後延遲然後畫另一個。 – user1733735 2013-04-06 06:43:09

回答

4

你不玩這種方式在OpenGL動畫(以及技術上你可以把一個SwapBuffers在循環的結束,但是這不是一個好主意)。

你應該做的是實現一個空閒處理器,調用時發出重繪。在繪圖功能中,您應該調用顯示功能的調用之間的時間,以便按照該量推進動畫。

從來沒有(!)運行一個循環,在其中添加一個睡眠或類似的。這樣的代碼對外部事件沒有反應,現代操作系統會將程序視爲無響應/掛起,並向用戶顯示一個消息框,以允許程序被終止。這不是你想要的。

+0

你可以爲此發佈一個示例。 – user1733735 2013-04-06 06:41:51

+0

所以你基本上要爲你的代碼編寫,@ user1733735 – 2013-04-06 09:08:08

+0

@ user1733735:編寫一些示例代碼,將需要知道您有運行時環境。你如何創建你的OpenGL上下文?你使用哪個框架?你的程序的整體結構是什麼。 – datenwolf 2013-04-06 10:29:03