【问题标题】:Possible for glutPostRedisplay() to redraw only certain objects?glutPostRedisplay() 可以仅重绘某些对象吗?
【发布时间】:2011-08-31 22:50:15
【问题描述】:

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

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

【问题讨论】:

    标签: c++ opengl graphics


    【解决方案1】:

    OpenGL 不知道“对象”是什么。它只知道你给它什么。如果您使用分形生成顶点,那么您需要保留足够的信息以便稍后重新生成分形,或者您需要将生成后的数据保留在某个地方。

    我假设你有一些随机数生成算法来制作你的分形,是吗?好吧,它们通常按种子编号工作。因此,您可以在生成分形之前简单地获取种子,然后在后续渲染中设置该种子,直到需要更改分形。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2015-07-23
      相关资源
      最近更新 更多