关于使用大量使用 摄像机+RenderTexture 的性能问题

由于骨骼无法直接使用shader展现出好的效果,只能退而求其次,使用 摄像机+RenderTexture,再进行shader处理。

类似下面的代码
const texture = new cc.RenderTexture();
texture.initWithSize(this.node.width,this.node.height);
const spriteFrame = new cc.SpriteFrame();
spriteFrame.setTexture(texture);
this.sprite.spriteFrame = spriteFrame;
this.camera.targetTexture = texture;

但是会有些小问题,如果游戏中有20个甚至50个骨骼,为了shader效果,我应该创建同样数量的摄像机进行渲染么,即使可以一对一,那其中产生的性能消耗会不会比较大,得不偿失呢

有大佬对这块比较了解么

你这个问题和这个类似,可以问下 小浣熊

这个也是在此原理基础上做了封装吧,单个效果肯定没问题,主要是 实际使用起来,性能消耗就不确定了

我记得论坛有个大佬的帖子好像是可以直接在spine动画针对某个骨骼使用shader的,不知道还能不能找到,大概是半年前了

翻了好久,没翻到

我也想知道,大佬能否50个骨骼跑一跑看看每帧耗时多少?

我也遇见了这个问题,场景和你差不都吧,不过是在做像素检测,也没想到好办法呢~期待大佬回答

还是得到时做个测试看看

测试回来啦,使用的FBO shader伴侣插件,骨骼数量60个

六倍CPU慢速 正常骨骼 60帧左右


六倍CPU慢速 骨骼+FBO 15~30帧

小米K30Pro 微信小程序 骨骼+FBO 60帧左右

六倍速 骨骼+FBO 性能分析:

帧数下降至少一半
从DC上看,似乎没差别,不过也有可能因为web的动态合图原因,具体不太清楚,没仔细研究
性能消耗大多数是在render方法上。。。

一般经验上讲,CPU六倍慢速,大概相当于 OV平台的低端机实测帧率

感觉。。。还是不能大量使用这种方法,哭了血亏

1赞