bof*_*jas 3 opengl vertex-buffer vertexdata vertex-attributes
对于每个属性,使用跨步顶点缓冲区与紧密打包缓冲区有什么优缺点?我的意思是例如:
步幅: xyzrgb xyzrgb xyzrgb
紧: xyzxyzxyz rgbrgbrgb
乍一看,您看起来很容易在使用跨步时更改大小,但是当您使用进行重新分配时,顶点缓冲区的内容将被删除glBufferData()
。
对我来说,最好使用紧密模型,因为位置,颜色和texcoords可能来自本地内存中的不同数组,并且因为没有跨步缓冲区数据函数;您必须在上传之前将所有数组复制到交错缓冲区中,或者glBufferSubData()
每个属性每个顶点使用一个(我猜这是一个糟糕的主意)。
似乎通常使用交错缓冲区(步幅)。这是为什么?我在这里想念什么吗?
小智 5
我认为通常有一个交错的缓冲区,因为它更易于创建(涉及较少的缓冲区,更直观)并且据称更快(由于内存访问模式或类似的东西),紧密打包的最大优点是能够更新仅需要更新的数据,从而可以更快地进行更新。大多数OpenGL教程都是通过绘制静态网格物体来教VBO的,这些网格不需要更新,因此可以受益于交错数据。
一般意见似乎是:尽可能交织,在需要时进行拆分。
请参阅: 交错顶点提交如何帮助提高性能?
另请参阅:http : //www.opengl.org/wiki/Vertex_Specification_Best_Practices
哪个直接说明:
“交织属性对渲染性能有多大帮助尚不清楚。需要分析数据。由于对齐需求,交织的顶点数据可能比未交织的空间占用更多的空间。”
归档时间: |
|
查看次数: |
3242 次 |
最近记录: |