为每个属性使用跨步顶点缓冲区与紧密打包缓冲区的优缺点是什么?我的意思是例如:
步幅:xyzrgb xyzrgb xyzrgb
紧的:xyzxyzxyz rgbrgbrgb
乍一看,使用 stride 时您可以轻松更改大小,但使用glBufferData()
.
对我来说,最好使用紧密模型,因为位置、颜色和纹理坐标可能来自本地内存中的不同数组,并且没有跨步缓冲区数据函数;您必须在上传之前将所有数组复制到交错的缓冲区中,或者glBufferSubData()
每个属性的每个顶点使用一个(我猜这个想法很糟糕)。
使用交错缓冲区(步幅)似乎是一种常见的做法。这是为什么?我在这里缺少什么吗?