出于学习目的,我决定使用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个球体,但第三种方法渲染1000只几乎没有6pfs
或许我写的代码完全错了,为什么它如此挣扎:( 如果有人有兴趣,这是我的代码http://pastebin.com/raw.php?i=74jLKV5M
答案 0 :(得分:1)
glDrawElements调用错误。 count参数应该是索引的数量,而不是数字的次数4.尝试更改它。
使用索引而不是三角形条带几乎总是更快。事实上,如果驾驶员在幕后使用索引来渲染三角形条带,我也不会感到惊讶。
正如我在评论中提到的那样,索引的顺序会影响性能。但是对于你的球体,你使用的索引模式可能是最优的,即便如此,它所产生的差异也很小。