内存模型与布局
页与大小
SharedArrayBuffer 底层以页为单位分配(64KB),本库按字节大小换算为页数进行申请:api/core/manager.ts:1。
分区设计(MemoryManager)
通过 MemoryManager 将一个 SAB 划分为多个分区并记录起点、偏移、大小:api/core/memory.ts:1
alloc(region, size, align)在指定分区按对齐规则分配一段空间并返回偏移getBuffer()返回整个共享缓冲区用于跨线程传递reset()将所有分区偏移恢复为 0,便于重用
示例分区:vertices / indices / uvs / normals
复合缓冲区(SharedModelBuffer)
SharedModelBuffer 在构造时根据顶点/索引数量计算每段字节大小,并设置各段的起点偏移:api/model/index.ts:1
getPositions()返回Float32ArraygetNormals()返回Float32ArraygetUVs()返回Float32ArraygetIndices()返回Uint32Array
这样在渲染或几何处理流程中可以直接对共享内存进行读写,而无需复制到新的数组。
