出于学习目的,我决定使用3种方法绘制球体
我读到使用ibo让程序运行得更快,但这是真的吗?对于100个切片和100个堆栈的球体,第二个方法产生40400个顶点,而第三个"仅"19802.通过这样做,我保存20598个每个32字节= 659136个字节.
verticesSize =(切片*4)*(堆叠+ 1);
IBO verticesSize =(slices*2)*(stacks-1)+2;
但是我需要创建索引数组,在这种情况下,大小为118800(创建所有面所需的索引数)*4(unsigned int的大小)= 475200字节!虽然第二种方法使用15fps渲染1000个球体,但第三种方法使用仅仅6pfs渲染1000个球体
或许我写的代码完全错了,为什么它如此挣扎:(如果有人有兴趣,这里是我的代码http://pastebin.com/raw.php?i=74jLKV5M
glDrawElements 调用是错误的。count 参数应该是索引的数量,而不是 4 的乘积。尝试更改它。
使用索引而不是三角形条几乎总是更快。事实上,如果驱动程序也在幕后使用索引来渲染三角形条,我不会感到惊讶。
另外,正如我在评论中提到的,索引的顺序会影响性能。然而,对于您的领域来说,您使用的索引模式可能是最佳的,即使如此,它造成的差异也很小。