Cocos Creator v1.6支持Camera剔除功能!

众所周知,当处理大型游戏时,一个场景中可能会同时存在几百上千个渲染对象,但是这些渲染对象却不一定都在屏幕中出现。而渲染一个对象是比较耗时的,如果我们能把这些不在屏幕中的渲染对象从渲染列表中剔除,性能势必能得到很大的提升。

假如我们在场景使用了100个精灵,但是目前只有50个精灵出现在屏幕中,剩余的 50个精灵玩家是看不到的,那么我们就没有必要花时间在这一帧上对这50个精灵进行渲染,这样就可以省下一半的性能来处理其他事情。

Cocos Creator逐步支持了比较常用的组件的剔除功能,比如Sprite、Label、RichText、DragonBones。一个游戏的表现基本上都是这些渲染组件组合而成的,如果能做到支持这些组件的剔除功能,游戏开发过程基本够用了。其他的渲染组件,比如粒子效果、绘画组件的剔除功能目前还没有进行支持,后续我们可以根据需求再进行讨论。

引擎团队早在v1.5版本就添加了Camera组件,而在上周刚正式发布的v1.6版本中则进一步完善了各组件在使用Camera组件情况下的剔除功能支持。假如我们在场景中使用了Camera组件,那么剔除功能将会按照Camera组件的视口来进行剔除。

测试例

这些渲染组件的剔除功能我们可以在example_cases/culling中找到相关测试。

支持剔除功能的组件我们在生成相关对象的时候可以观察到GL calls的变化,而不支持剔除功能的组件GL calls则不会发生变化。

f5cd148c7ca1bea687a060d5c6e9ccb3.jpeg

c12b0e9a3d601ee2884c900b9ec0b574.jpeg

从这两幅图中可以看到GL calls是完全不一样的。

点击Enable Camera则可以测试在使用摄像机的情况下剔除功能是否仍然正常。

TiledMap

之前经常有小伙伴反馈说webgl情况下的Tiled Map使用了Camera后有些地方看不到,这个问题在v1.6版本中得到了很好的修复。

目前TiledMap只在web平台有剔除功能,native平台上由于还是沿用老的TiledMap实现,使用SpriteBatchNode作为渲染实现。不过native平台的TiledMap,引擎团队正在考虑沿用web平台的实现方式进行重现,届时剔除功能可以一并实现。

还未尝试这个功能的小伙伴不妨进入「原文链接」下载Cocos Creator v1.6正式版,我们期待更多有效的反馈。

9d966562e9a6959952f92df3fd3bdbe4.gif

戳原文,更有料!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值