← 全部概念
性能优化 / 29
绘制调用
一次调用,四百个箱子
交互演示
交互演示 · 移动指针或点击画面,观察变化
一次绘制调用就是 CPU 告诉 GPU 绘制一个网格,CPU 需要花时间准备每次调用。实例化可以通过一次调用,绘制多个使用相同网格和材质的副本,并通过一份列表提供各副本的位置和旋转。动画用两种方式绘制同样的 400 个箱子,绘制调用次数从 400 次降到 1 次。
适用场景
对大量共享几何和材质的物体使用实例化。将兼容物体合批,同时保留足够细的可见性判断粒度,避免把屏幕外的大批物体也一起绘制。
实现示例
不依赖特定引擎的伪代码。请根据你使用的引擎调整函数和坐标约定。
for instance in visibleInstances:
transforms.append(instance.worldMatrix)
instanceBuffer.upload(transforms)
drawInstanced(mesh, material, transforms.length)常见错误
减少绘制调用并不会自动减少三角形、着色器开销或透明物体的过度绘制。应测量实际瓶颈,并记住材质变化可能将一个批次拆开。
内容原作 Nicolas Zullo · 中文整理与交互改编