我使用glVertexAttribPointer每帧(~242kb)加载我的顶点数据大约需要8ms。
我是否会通过使用VBO获得任何性能提升?
我认为答案是否定的因为我还有如果glBufferData加载数据的速度比glVertexAttribPointer快,那么获得性能提升的唯一方法就是这样吗?
答案 0 :(得分:2)
如果你有静态顶点数据,那么VBO具有非常明显的性能优势,因为数据保存在GPU可访问的内存中。
当您使用不带VBO的glVertexAttribPointer时,驱动程序必须每帧将顶点数据复制到GPU可访问内存。客户端阵列需要复制的原因有两个
VBO数据由驱动程序分配并映射到GPU。如果保留相同的顶点数据,则可以避免复制。如果只使用glBufferSubData更新部分顶点数组,也可以优化更新。 (例如,只更新没有顶点位置更新的纹理坐标)