向GPU写入所有数据 0、目的,简化rebuild之后的聚合更新, 1、默认false 2、调用rebuild()后,需要写入所有数据。 A、release的阈值触发,由BPC触发 B、按需调用rebuild C、update之后,更改flag为false 3、带数据的整合初始化之后,不需要改变flag,已经采取了立即写入模式
最后一次分配的偏移量 1、默认从0开始分配。 2、每次分配,偏移量增加指针大小。 3、rebuild时,偏移量重置为0,然后按照每次分配的指针大小,更新此值。
指针ID列表
指针偏移量映射表,用于聚合更新 1、key:指针offset 2、value:pointerID; 更新: 1、分配指针时,更新映射表。 2、释放指针时,更新映射表。 3、rebuild时,重置映射表。
指针管理器
release阈值,默认0.3, 1、staticVS 没有重建触发阈值。
BOL大小,单位:字节。 默认大小64K,也是最小值。
聚合更新的偏移量和长度表,update()按照offset,length进行更新。 1、每帧清空 2、根据更新偏移量和长度,计算更新的offset和length。 A、连续更新的offset的间距为:64K。即小于64K,则合并更新。 [number, number][] = [offset, length][] offset: 更新偏移量(聚合更新的偏移量) length: 更新长度(聚合长度)
合并更新间距阈值,默认64K 。 1、staticVS 没有合并更新间距阈值。
GPUBufferUsageFlags类型
重新构建BOL 1、重新紧密排布指针数据,即内部调度 2、更新指针的offset和byteLength
释放指针 1、从pointerIdList中移除指针ID 2、从pointerOffsetMap中移除偏移量和指针ID的映射 3、更新BOL的size使用量 4、不考虑聚合更新的Map的问题,不再这里处理(在update中调用 this.generateUpdateOffsetAndLenght(clock);)
指针ID
设置合并更新间距阈值
更新BOL的size使用量
add或remove
指针大小,单位:字节
Optionaloffset: number
BOL偏移量和长度映射类 1、CPU和GPU中的buffer具有相同的offset和byteLength 2、更新偏移量和长度时,需要更新CPU和GPU中的buffer(重新写入数据)。