【问题标题】:Playing an animation in OpenGL在 OpenGL 中播放动画
【发布时间】:2013-04-05 22:23:59
【问题描述】:

只想延迟几微秒,这样我就可以看到我的动画了。延迟功能不起作用。我正在使用 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);        
}

【问题讨论】:

  • 会发生什么是我的动画被绘制在一起。我想要的是它应该绘制一个然后延迟然后再绘制另一个。

标签: c++ opengl fltk


【解决方案1】:

您不会在 OpenGL 中以这种方式播放动画(从技术上讲,您可以将 SwapBuffers 放在循环的末尾,但这不是一个好主意)。

您应该做的是实现一个空闲处理程序,它在调用时发出重绘。在绘图函数中,您应该计算调用显示函数之间的时间,以将动画推进该量。

Never(!) 运行一个循环,在其中添加睡眠或类似内容。这样的代码对外部事件没有响应,现代操作系统会将表现出类似行为的程序视为无响应/挂起,并向用户显示允许终止程序的消息框。这不是你想要的。

【讨论】:

  • 你能发一个例子吗?
  • 所以您基本上希望为您编写代码,@user1733735
  • @user1733735:编写一些示例代码需要知道您拥有哪个运行时环境。如何创建 OpenGL 上下文?您使用哪些框架?你的程序的整体结构是什么。
  • 我正在使用 Visual Studio 2010。我使用过 FLTK、opengl,我的 draw() 函数中有此代码。
猜你喜欢
  • 1970-01-01
  • 2023-03-22
  • 2021-04-11
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
相关资源
最近更新 更多