【Cocos VS LayaBox】Graphics 会有计划继续完善吗?比如矢量文字、比如裁剪区域

对比了一下两家平台(LayaBoxCocos Creator)的 Graphics 实现完善程度,发现 CCC 在Graphics 上的API完善程度还不够

无法绘制矢量文字,会导致什么问题呢?

要实现无限放大,文字不模糊,那么在没有矢量文字的前提下,暂时采用了大位图去实现,一定放大程度下还可以接受,但是带来了新的问题,假设要显示很多个文字,那么节点的创建又很耗时,然后有引发新的一轮优化(节点对象池,层级管理DC降低等等),最后好像我也实现了,但是好耗时呀,其实只需要一个基础的矢量文字渲染功能,就可以了,但是绕了好多路

没有裁剪区域API,会导致什么问题呢?

只能用Mask去代替,Mask本身是吃性能,能通过Mask实现裁剪区域,但是又会引入新的性能优化问题。有时绕很多路

最后,想问的是 CCC 的 Graphics 还会有完善计划吗?

ps: 在附一份原生 Android Graphic API

2赞

@BigBear @953459485 @jare

mark

谢谢你的用心反馈。请问你需要在什么平台使用 Graphics?矢量文字直接用 Label 不行吗?

A1. 现在主要是原生,但是Cocos能打包到不同平台,原生、WEB、微信小游戏、FaceBookInstantGame上都可能会用到,但我也尝试过无论是发布到哪个平台,用上面代替实现方案都会遇到性能问题

A2. 因为我是想做无限放大都能保持清晰效果,而这个无限放大,我尝试过用node的scale 去实现的,但即便这个node是用 Graphics 去画,加大node的scale是不能实现放大的同时保持清晰,因此最后我是采用摄像机的 zoomRatio 属性去实现放大效果,这样子就可以实现无线放大也能保持清晰效果,但是采用系统字体的Label在这种摄像机缩放场合下是不能保持清晰的,而如果 是采用BMFont(里面字体弄大一点)的Label那么就可以实现一定程度上放大后依旧保持清晰效果,但是理论上是不能支持无限放大的同时保持清晰效果,不过一定程度上可以了,就先实现了~。不过这还不是重点,重点是假设我有几百个Label,即便采用BMFont(能解决DC),但是当数量级上来了,就发现怎么实现和优化都会是有点性能问题和绕路(尝试过节点对象池,提前预加载,分开帧加载等等的方案,但是数量级上来了,怎么实现都有点别扭)

明白,Cocos 的 graphics 本身是基于 GPU 实现的,性能比较好,但是由于不是基于 Canvas,所以不太好实现 Canvas 的这些功能(例如文本)。
不过其实你可以自己创建一个 Canvas,再调用那些 Canvas 的 API,也能实现一样的功能。不过 Cocos 的原生平台 Canvas API 可能会有点兼容性问题,不一定所有接口都支持。

想接入类似paper这种js的绘图库,然后发现cocos的graphics少了太多接口,类似这种第三方库怎么接呢?