我想知道OpenGL VBO是否意味着只用于大型几何图形数组,或者即使对小型数组也使用它们是否有意义。我有代码定位各种几何相对于其他几何,但一些“叶”几何对象是相当小的,10x10四边形球和类似的(每个200三角形)。我可能有很大数量的这些小叶子对象。我希望能够对每个小叶对象有一个不同的变换矩阵。看来我有两个选择:
是大量的VBO效率低下,还是我应该继续选择选项1?有什么更好的方法来处理有很多小物体的情况吗?我应该使用顶点数组或类似的东西吗?
发布于 2011-12-31 11:39:06
如果您的数据是静态的,并且由一个对象组成,最理想的解决方案是只对一个网格使用显示列表和一个VBO。否则,一般规则是,除了在主绘制循环中呈现之外,您希望避免做任何其他事情。
发布于 2011-12-31 11:26:04
一些好的信息位于:实践。
我认为每一个网格有200个三角形并不是很小,也许VBO对每个网格的性能都不会降低那么多。不幸的是,它依赖于硬件规范。
一个巨大的缓冲区不会获得巨大的性能差异..。我认为最好的选择是每个VBO存储几个(但不是全部)对象。
使用一个缓冲器:这没有问题.您只需绑定一个缓冲区,然后就可以使用具有不同参数的glDrawArrays。例如,如果一个网格由100个verts组成,并且在缓冲区中,您可以使用其中的10个网格。
glDrawArrays(triangles, 0, 100);
glDrawArrays(triangles, 100, 100);
glDrawArrays(triangles, ..., 100);
glDrawArrays(triangles, 900, 100);通过这种方式,您可以最小化变化的缓冲区,并且仍然能够使其非常有效。
那些“小”物体是一样的吗?它们的几何形状相同,但变换/材料不同吗?因为也许它是值得使用的“实例”?
https://stackoverflow.com/questions/8687638
复制相似问题