用途:在分析 PixiJS v8 应用的 FPS、绘制调用或 GPU 内存瓶颈后,按需套用对应的优化模式。资料强调先分析再优化,优先使用浏览器 DevTools 的 Performance 与 GPU 分析定位瓶颈。
主要能力:
- 资源销毁与清理:sprite.destroy()、sprite.destroy({ children: true, texture: true, textureSource: true })、Assets.unload();应用销毁需 app.destroy({ releaseGlobalResources: true }),否则旧应用的池化批次与纹理会泄漏到新应用,导致闪烁与画面损坏。
- 纹理垃圾回收:通过 app.init({ gcActive, gcMaxUnusedTime, gcFrequency }) 调整,默认每 30 秒检查、清理闲置 60 秒的资源;也可手动 texture.source.unload()。
- PrepareSystem:app.renderer.prepare.upload(app.stage) 提前上传纹理与图形,避免首帧卡顿。
- cacheAsTexture:将静态子树渲染为单张纹理以减少绘制调用,修改后需 updateCacheTexture(),销毁前必须先 cacheAsTexture(false)。
- 对象池:复用对象并更新属性,避免频繁销毁重建。
- 批处理优化:按对象类型、纹理源、混合模式分组子节点顺序,减少批次中断;使用 spritesheet 图集替代零散纹理。
- 文本与图形:频繁变化内容用 BitmapText;复杂 Graphics 用 renderer.generateTexture() 转为纹理。
- 剔除:注册 CullerPlugin 后设置 cullable、cullArea,或用 cullableChildren 跳过静态 UI 子树。
- 分辨率与抗锯齿权衡、RenderTexture 的 transient 选项、分批销毁纹理、filterArea 与掩码开销控制等。
使用方式:按资料中的代码片段调用相应 API,例如 container.cacheAsTexture(true)、extensions.add(CullerPlugin)、await app.init({ gcMaxUnusedTime: 60_000, gcFrequency: 30_000 })。
适用场景:PixiJS v8 应用的性能调优,尤其是绘制调用过多、GPU 内存占用高、帧率下降或首帧卡顿的情况。
限制:剔除默认关闭且仅在注册 CullerPlugin 后生效,CPU 受限时反而增加开销;cacheAsTexture 占用 GPU 内存,最大纹理尺寸依赖 GPU,且与掩码组合较脆弱;transient 纹理仅适用于单次渲染且不被重新进入或包裹滤镜/掩码的场景。资料未提供具体性能数值、收费或平台支持信息。