instancedDynamicBufferAttribute
instancedDynamicBufferAttribute
为需要从 CPU (JavaScript) 频繁更新的“每实例”数据,提供一个性能优化的数据通道。
核心优势
向图形驱动程序提供明确的“使用意图”(DynamicDrawUsage)提示,在数据每帧更新时获得更好的性能,同时将底层细节抽象化,简化了代码。
常见用途
CPU 驱动的物理模拟
实时高频数据可视化(如音频频谱)
与 UI 交互的直接操作(如鼠标拖拽)
CPU 端计算的程序化动画
如何调整
视觉效果与 instancedBufferAttribute 相同,但性能表现不同。当实例数量巨大或在低性能设备上时,使用它能避免因高频数据更新导致的卡顿,带来更平滑的动画体验,其效果主要体现在更稳定的帧率上。
代码示例
1// JS 端 animate() 循环中:
2// ... 循环计算并更新 positionsArray ...
3// 关键:通知 Three.js 数据已更新
4positionAttribute.needsUpdate = true;
5
6// TSL 端 (顶点着色器):
7// 将 CPU 算好的、每帧更新的偏移应用到位置上
8position.addAssign( positionAttribute );