2.5D 实现的性能优化思路?

在商城中之前有一个用cocos creator做 的2.5D demo- 真2.5D透视视角实现《饥荒》

但是放入节点(龙骨动画)太多,性能不太好优化:
mac上网页中运行demo,性能只有30fps左右, drawcall是84. (80个树,1个人,再加上环境) ,
我的疑惑是

  1. cocos应该是有视截体优化?在屏幕显示范围内显示,屏幕显示范围外不显示,按理说应该drawcall没有这么多? 是因为视截体只针对 3d物体?

这种情况,如果地图更大,放入节点更多,估计帧数会下降更厉害

2 我尝试把所有的树(龙骨动画?)animation cache mode 改成shared cache,然后选中enable bash, 结果整个地图只能显示1棵树了。。剩下的树都不显示了。这种情况是不是就不能这样子优化。
思路来自:
http://it.cha138.com/ios/show-5896479.html
所以想请教下 这里的优化思路。
另外使用SpriteRenderer是否也能完成这种效果,是否性能会好一些?

引擎还没有视裁体这种功能。

1.这个是程序自己实现的地图逻辑,2.share cache也没有只是降低内存。cpu计算没少。

所以我以前的老大说,现在的ccc沦为卡牌游戏、三消游戏引擎了,还真是没错。杯具。

每个时期有特定的产物,再往前还是qp呢,现在是卡牌,再几年发展就换了呢

他是在嘲讽引擎的上限。 :rofl:

按理说,3d引擎渲染流程中,应该会选取在摄像机范围内的渲染,摄像机范围外会剔除掉。这一步?

那我如果想在cocos creator实现类似这种2.5d ,自动生成地图,用什么办法比较好,否则这地图一大,放东西一多,肯定会卡的不能玩。

合批的话,我理解是渲染批次将同材质的一起渲染?
不用多次提交材质?

把树改为用序列帧透过shader播放, 然后把树的material使用 GPU_Instance,然后spriteRenderer或者普通panel来用这个material, 那麽80棵树的drawcall应该可以降到只有1

另外一个问题,如何解决只有在屏幕内的节点渲染,摄像头外的节点不渲染呢。
场景 update 的时候自己算吗?

只要在锥型空间外就不会渲染呀, 整个mvp不是已经包含了裁剪了?

引擎3.x , 3D是有做视锥剔除,2D需要自己做剔除。

1赞

我试了下,龙骨动画不算3d,只能自己剔除了

是的。我用代码测试了下 ,好像是这样。

用3.x吧,2.x已经慢慢淘汰了

3.x啥时候支持spine、龙骨在3d场景显示啊

1赞

@jare

1赞

我用的是3.x啊,只是想在3d场景上渲染2d龙骨,这种

像使用系统字,为了避免打断合批,还得自己把它提取出来,真的好烦人。有时候文字放在某个对象里面,我只需要移动这个对象就好了,但为了减少dc,我提取出来后,就得写代码控制2个一起移动。