只想延迟几微秒,以便我可以看到动画。延迟功能不起作用。我正在使用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,但这不是一个好主意)。
您应该做的是实现一个空闲处理程序,该处理程序在调用时会发出重绘。在绘图功能中,您应该对调用显示功能之间的时间进行计时,以使动画提前该数量。
从不(!)运行循环,您在其中添加睡眠或类似 Action 。这样的代码对外部事件没有响应,现代OS会将程序的行为视为无响应/挂起,并向用户显示一个允许杀死程序的消息框。这不是您想要的。