我有一个分形对象,它是用变量的随机值创建的。我正在使用C ++和OpenGL。但是现在,因为我打算使用glutTimerFunc
来动画场景中的其他对象,我需要调用glutPostRedisplay()
来重绘场景。但是,这会影响完全基于随机值的分形对象,因为glutPostRedisplay()
会为新的随机值重新种子,然后整个对象会改变outlook。
如何让OpenGL只重绘某些对象而不是一切?我曾想过创建一个单独的函数来首先生成一个随机值数组,然后将数组传递给绘制分形对象的函数。但是阵列可能非常混乱,因为使用了几个不同的随机值。能有更好的方法吗?
答案 0 :(得分:3)
OpenGL不知道“对象”是什么。它只知道你给它的东西。如果要生成带有分形的顶点,那么您需要保留足够的信息以便稍后重新生成分形,或者您需要将后代数据保留在某处。
我假设你有一些随机数生成算法来制作你的分形,是吗?嗯,他们通常按种子数量工作。因此,您可以在生成分形之前简单地获取种子,然后在后续渲染中设置该种子,直到更改分形为止。
或者,您可以将分形渲染到屏幕外缓冲区,然后将其显示到屏幕上。这将需要使用Framebuffer Objects。