我正在尝试使用bufferData vs bufferSubData,并注意到使用bufferSubData时底层arraybuffer的大小会影响性能。
_gl.bindBuffer(_gl.ARRAY_BUFFER, geometry.attributes.position.buffer)
if(init) _gl.bufferData(_gl.ARRAY_BUFFER, geometry.attributes.position.array, _gl.DYNAMIC_DRAW)
else _gl.bufferSubData(_gl.ARRAY_BUFFER, 0, new Float32Array(geometry.attributes.position.array.buffer,0,geometry.iPos))
_gl.enableVertexAttribArray( program.attributes.position )
_gl.vertexAttribPointer( program.attributes.position, 3, _gl.FLOAT, false, 0, 0)
_gl.drawArrays(_gl.TRIANGLES,0,geometry.iPos)
更大的图片:我写了一个跟踪渲染器,并且想要预先分配一个大数组,以确保不会因为创建的顶点而耗尽存储,geometry.iPos是顶点计数器 - 以避免缓冲整个数组我尝试使用bufferSubData,缓冲区数据更糟糕 - 但最让我烦恼的是,当使用bufferSubData时,位置数组的大小会影响性能,为什么会这样,我该如何避免呢?