最近做到一个需求,需要使用到发光描边,而且需要不停地更改需要发光描边的对象,结果使用后发现帧率直接降到个位数!
在网上看了很多帖子发现对我的代码没什么用,改完帧率还是很低
然后自己查看了代码发现,因为需要不停更改描边对象,所以一直调用
this.composer.addPass(this.outlinePass)
给后处理的composer添加了无数个outlinePass通道,但是没有清除
想着既然有addPass那应该也有removePass吧,找了一下真的有
解决方法:
//在下一次进行描边时,将composer一个outlinePass通道清除
this.composer.removePass(this.outlinePass)
this.outlinePass.selectedObjects = []
//这里处理逻辑代码
//赋值需要描边的对象,然后在composer中加入outlinePass通道
this.outlinePass.selectedObjects = [mesh]
this.composer.addPass(this.outlinePass);