顶点缓冲对象和glutsolidsphere

时间:2012-05-24 07:44:51

标签: performance opengl glut vertex-buffer

我必须在“弹簧质量”系统的3D物理模拟中绘制大量的球体。

我想知道一种绘制球体的有效方法,而无需在模拟的每一步编译显示列表(每个步骤可能会在几毫秒到几秒之间变化,具体取决于计算中涉及的实体数量)。 / p>

我已经读过顶点缓冲区对象是绘制对象的有效方法,有时也需要更新。

是否有任何方法以比glutSolidSphere更快的方式绘制OpenGL球体?

2 个答案:

答案 0 :(得分:2)

  

我想知道一种绘制球体的有效方法,而无需在模拟的每一步编译显示列表(每个步骤可能会在几毫秒到几秒之间变化,具体取决于计算中涉及的实体数量)。 / p>

如果您输入的几何图形是动态的,为什么要生成显示列表呢?显示列表适用于从未或很少更改的静态几何体。

  

我已经读过顶点缓冲区对象是绘制对象的有效方法,有时也需要更新。

实际上,VBO对静态几何也是最有效的。通常,您希望保持实际几何更新的数量尽可能低。在你的情况下,唯一更新的是球体的位置(也许是大小)。这是实例绘图的主要示例。然而,这也很有效,只更新一个统一或变换矩阵,并进行调用绘制球体。

Vertex Arrays和VBO的想法是,您只需一次调用即可绘制整批几何体。一个球体就是这样一批。

答案 1 :(得分:2)

球体是自相似的;每个球体只是任何其他球体的缩放版本。我认为没有必要重新生成任何几何体。实际上,我认为根本不需要超过一个球体

这只是提供适当的缩放矩阵的问题。我会建议一个半径为1的球体,它以显示列表或缓冲对象网格的原点为中心。然后,您可以使用刻度将其转换为不同的位置,以设置新的半径。