出于学习目的,我决定使用 3 种方法绘制球体
- 显示列表
- Voa Vbo (GL_TRIANGLE_STRIPE)
- Vao Vbo 和 Ibo (GL_TRIANGLES)
我读到使用 ibo 可以使程序运行得更快,但这是真的吗?对于 100 个切片和 100 个堆栈的球体,第 2 种方法产生 40400 个顶点,而第 3 个“仅”产生 19802 个顶点。通过这样做,我每 32 个字节 = 659136 个字节节省 20598 个顶点。
verticesSize=(slices*4)*(stacks+1);
IBO verticesSize=(slices*2)*(stacks-1)+2;
但是,我需要创建索引数组,在这种情况下,索引的大小为 118800(创建所有面所需的索引数)*4(无符号整数的大小)=475200 字节!第二种方法以 15fps 渲染 1000 个球体,而第三种方法以几乎 6pfs 渲染 1000 个球体
- 将索引数组从 GL_TRIANGLE 转换为 GL_TRIANGLE_STRIP 是否会提供比第二种方法更有效的方法?
- 使用 ibo 渲染球体是个坏主意吗?
- 为什么它更慢?索引数组中的顺序有什么问题吗?
或者,也许我写的代码完全错误,这就是为什么它如此挣扎:(如果有人感兴趣,这是我的代码http://pastebin.com/raw.php?i=74jLKV5M