在 OpenSceneGraph(OSG)中,setUpdateCallback()addUpdateCallback() 是用于添加更新回调函数的两种方法,它们之间的区别主要在于添加回调函数的方式和影响范围。

  1. setUpdateCallback()
  • setUpdateCallback() 方法用于设置一个更新回调函数,它将覆盖先前设置的任何更新回调函数。如果调用 setUpdateCallback() 多次,每次都会覆盖之前设置的回调函数,因此只有最后一个设置的回调函数会被保留。
  • 这个方法通常用于在场景图的根节点上设置全局的更新回调函数,或者在单个节点上设置独特的更新逻辑。
  1. addUpdateCallback()
  • addUpdateCallback() 方法用于添加一个更新回调函数到回调函数列表中,而不会覆盖先前添加的回调函数。如果调用 addUpdateCallback() 多次,每次都会将新的回调函数添加到回调函数列表中。
  • 这个方法通常用于在不同的节点上添加多个更新回调函数,这些回调函数可以一起工作来实现更复杂的更新逻辑。例如,可以在一个节点上添加一个用于执行动画的回调函数,然后在另一个节点上添加一个用于执行碰撞检测的回调函数。

使用场景:

  • 如果希望设置一个全局的更新回调函数,并且只关心最后设置的回调函数,则可以使用 setUpdateCallback()
  • 如果希望在一个节点上添加多个更新回调函数,或者希望在不同的节点上添加不同的更新逻辑,则可以使用 addUpdateCallback()