使用opengl

时间:2016-05-26 15:06:06

标签: opengl

我必须绘制一个物理模拟,显示在粒子周围移动的轨迹。在绘图时,实时从数据库中读取3D位置数据。为每个对象设置VBO后,绘图调用将成为标准glDrawArrays(GL_LINE_STRIP, 0, size)。问题是,自添加新点以来,每帧都会更新存储跟踪点的VBO。这对我来说效率极低!此外,如果我想用从粒子的实际位置到较旧点的渐变颜色绘制轨迹,该怎么办?我必须在每次绘制调用时更新VBO中所有顶点的颜色!通过这种东西的标准方法是什么?

总结:

  • 我想绘制未定义的绘制线 - 可能是无限长度(长度随时间增加)。
  • 我想根据轨迹上的实际相对位置(例如开始时的白色(实际粒子位置),最后的黑色(第一个粒子位置),中间的灰色)来确定轨迹中的点的颜色。

我阅读了很多教程但是我没有发现任何关于绘制不断更新和无限期增长的内容......我将不胜感激任何建议!谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 使用多个VBO,以便每个都有固定数量的顶点。这样,您只需在添加新点时修改序列中的最后一个VBO,而不是完全更新一个巨大的VBO。
  2. 添加序列号顶点属性或使用gl_VertexID并将总点数作为制服传递。然后,您可以将给定顶点的序列号除以总计数,并使用该分数在渐变颜色之间进行混合。