gpt4 book ai didi

c++ - IBO 比 GL_TRIANGLE_STRIP 还差?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:20 24 4
gpt4 key购买 nike

出于学习目的,我决定使用 3 种方法绘制球体

  1. 显示列表
  2. Voa Vbo (GL_TRIANGLE_STRIPE)
  3. Vao Vbo 和 Ibo (GL_TRIANGLES)

我听说使用 ibo 可以使程序运行得更快,但这是真的吗?对于 100 个切片和 100 个堆栈的球体,第二种方法产生 40400 个顶点,而第三种方法“仅”产生 19802 个顶点。通过这样做,我保存了 20598 个顶点,每个 32 字节 = 659136 字节。

  1. verticesSize=(slices*4)*(stacks+1);

  2. IBO verticesSize=(slices*2)*(stacks-1)+2;

但是我需要制作索引数组,在这种情况下大小为 118800(创建所有面所需的索引数)*4(unsigned int 的大小)=475200 字节!第二种方法以 15fps 渲染 1000 个球体,而第三种方法以 6pfs 渲染 1000 个球体

  1. 是否将索引数组从 GL_TRIANGLES 转换为GL_TRIANGLE_STRIP 将提供比第二个更有效的方法方法?
  2. 使用 ibo 渲染球体是不是个好主意?
  3. 为什么比较慢?indices数组的顺序有问题吗?

或者也许我写的代码完全错误,这就是为什么它如此挣扎的原因:(如果有人感兴趣,这是我的代码 http://pastebin.com/raw.php?i=74jLKV5M

最佳答案

glDrawElements 调用错误。 count 参数应该是索引的数量,而不是数字乘以 4。尝试更改它。

使用索引而不是三角形带应该几乎总是更快。事实上,如果驱动程序也在幕后使用索引来渲染三角形带,我也不会感到惊讶。

此外,正如我在评论中提到的,索引的顺序会影响性能。然而,对于您的领域,您使用的索引模式可能是最佳的,即使如此,它产生的差异也很小。

关于c++ - IBO 比 GL_TRIANGLE_STRIP 还差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com