we
    Preparing search index...

    Class BlockPointerCoordinator

    BPC(BOL Pointer Coordinator) 是BOL和pointer的协作管理器 1、负责BOL的数量与类型管理 2、负责pointer的分配、释放、resize到BOL的任务传递 A、resize时,原来BOL的内存可能不够用,则需要调度(释放原来BOL的内存,申请新的BOL并分配pointer需要的空间) B、目前不进行跨BOL的内存调度,下一步功能稳定后进行; 3、更新Pointer的对应内容 4、

    Index

    Constructors

    Properties

    BOL_params: {
        rebuildPecent: I_BolRebulidPercent;
        sizeOfBOL: I_BolSize;
        updateStrideSize: I_BolStrideSizeOfUpdate;
    } = ...

    Type Declaration

    BOLid: Set<number> = ...

    BOLID集合

    BOLs: {
        all: Map<number, BlockOffsetLength>;
        dynamicVS: Map<number, BlockOffsetLength>;
        static: Map<number, BlockOffsetLength>;
        storage: Map<number, BlockOffsetLength>;
        uniform: Map<number, BlockOffsetLength>;
        VS: Map<number, BlockOffsetLength>;
    } = ...

    BOL集合,key为BOLID,value为BOL实例

    clock: Clock
    defaultBOL: E_BOLBufferType[] = ...

    默认BOL类型,没有static,因为static是通过this.createStaticBolWithData()创建的

    device: GPUDevice
    lastBOLid: number = 0

    最后一个BOLID

    name: string = 'BPC'
    pointers: Pointers

    指针管理器

    scene: Scene

    Methods

    • 创建静态顶点BOL 1、为加载WE静态模型数据准备的BOL 2、静态VS必须有初始化数据,且不可更改 3、静态VS的CPU侧内存不会保留 4、静态VS不会被添加到MBM中

      Parameters

      Returns number

    • 管理BOL

      • 1、BPC.managerBOL()在scene.update()中调用
      • 2、在MEM之前调用,确保所有BOL都已完成调度
      • A、在rootManager->entityManager之后
        
      • B、MEM在renderManager之前
        

      BOL release 阈值调度

      • 1、for BOLs.all,根据size.release阈值,判断是否需要rebuild
      • 2、如果需要,调用BOL的rebuild方法

      BOL间调度:todo * 1、只在内部调用 * 2、外部调度增加: * A、BPC先clone一个ArrayBuffer,缓存指针数据; * B、先rebuild, * C、分配指针内存。 * D、然后由BPC更新指针的offset和byteLength。 * E、BPC调用指针的updateDataByPointerID方法,写入clone的data * 3、被调度的BOL * A、同2.A * B、删除BOL内指针:pointerIdList 和 pointerOffsetMap * C、按需 调用rebuild()

      Parameters

      Returns void