【发布时间】:2013-07-15 17:37:12
【问题描述】:
为每个属性使用跨步顶点缓冲区与紧密打包缓冲区的优缺点是什么?我的意思是例如:
步幅:xyzrgb xyzrgb xyzrgb
紧:xyzxyzxyz rgbrgbrgb
乍一看,使用 stride 时您可能很容易更改大小,但是当您使用 glBufferData() 重新分配顶点缓冲区时,顶点缓冲区的内容会被删除。
对我来说,最好使用紧密模型,因为位置、颜色和纹理坐标可能来自本地内存中的不同数组,并且没有跨步缓冲区数据函数;您必须在上传之前将所有数组复制到交错缓冲区中,或者每个属性的每个顶点使用一个 glBufferSubData()(我猜这个想法很糟糕)。
似乎有使用交错缓冲区(步幅)的常见做法。这是为什么?我在这里缺少什么吗?
【问题讨论】:
标签: opengl vertex-buffer vertex-attributes vertexdata