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