2013-04-05 109 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