动画模型而不重绘整个背景图--OPENGL

时间:2015-03-17 05:50:33

标签: c++ c opengl glut

使用OPENGL,我正在制作一个简单的动画,其中一个小三角形将穿过我用鼠标创建的路径(glutMotionFunc)。

所以问题是如何在不使用glutSwapBuffers()重绘整个路径的情况下为小三角形设置动画;

而且,我怎么才能旋转那个三角形。

我不想使用 overlay ,因为在这两个图层之间切换需要花费很多时间。

2 个答案:

答案 0 :(得分:2)

如果重绘整个路径实在太贵了,可以将渲染渲染到屏幕外的帧缓冲区。使用OpenGL执行此操作的机制称为帧缓冲对象(FBO)

详细解释如何使用FBO超出了答案范围,但您应该能够找到教程。您将使用以下功能:

  • glGenFramebuffers()
  • glBindFramebuffer()
  • glFramebufferRenderbuffer()glFramebufferTexture()

这样,只要添加了新的三角形,就可以在FBO中绘制额外的三角形。要在屏幕上显示渲染,您可以使用glBlitFramebuffer()将FBO的当前内容复制到主帧缓冲区。

答案 1 :(得分:0)

你不能!因为它没有意义!

电脑屏幕的工作方式与电影相同:fps!每秒帧数。没有"动画"在屏幕上,它只是一系列快速的静态图像,但由于我们的眼睛看不到快速移动的东西,所以看起来它正在移动。

这意味着每当你想要绘制的东西发生变化时,你需要创建一个新的静态图像"那个阶段,这是用所有glVertex等代码完成的。完成绘图后,您希望将其放在屏幕上,以便交换缓冲区。