glutPostRedisplay()可能只重绘某些对象

Possible for glutPostRedisplay() to redraw only certain objects?

本文关键字:对象 glutPostRedisplay      更新时间:2023-10-16

我有一个分形对象,它是用随机值创建的变量。我使用c++和OpenGL。但是现在,由于我打算使用glutTimerFunc来动画场景中的其他对象,我需要调用glutPostRedisplay()来重新绘制场景。然而,这将影响完全基于随机值的分形对象,因为glutPostRedisplay()将重新播种新的随机值,然后整个对象改变外观。

我如何使OpenGL只重新绘制某些对象而不是所有对象?我想过创建一个单独的函数,首先生成一个随机值数组,然后将该数组传递给绘制分形对象的函数。但是这个数组可能会很混乱,因为使用了几个不同的随机值。还有更好的方法吗?

OpenGL不知道什么是"对象"。它只知道你给了它什么。如果你用分形生成顶点,那么你需要保留足够的信息以便以后重新生成分形,或者你需要保留生成后的数据。

我假设你有一些随机数生成算法来制作你的分形,对吗?他们通常是按种子数计算的。所以你可以简单地在生成分形之前获得种子,然后在随后的渲染中设置种子,直到改变分形的时候。

或者,您可以将分形渲染到屏幕外的缓冲区,然后将其blit到屏幕上。这将需要使用Framebuffer对象