2018年4月25日星期三

扫雷小地图优化之矩形合并

扫雷的小地图是一个动态的点阵图, 直接使用Graphics组件绘制在大屏幕绘制大概64x64空间时, 按每个数据点进行绘制时性能还算面前能够接受, 大概10几个毫秒
但是到了丧心病狂的滚动大地图时, 因为有256x256的数据, 这个数量级如果还是俺点绘制. 6万5的数据点, 每个点还都是矩形, 我的妈妈咪呀, 几十万的GL vert爽的不要不要的
所以我们要将相同的数据举行进行合并, 合并时算法还要带剪枝, 要不性能又都跑到脚本层消耗掉了.
一开始是两道循环, 用Map保存数据(是为了查找方便)
到最后是一道循环加内嵌的一道高度剪枝的循环, 数据全部用Array, 终于算是手机上效率可以接受了. 大概200毫秒左右, 90%多的性能消耗还是最后落在了Graphics的fillRect上面
用两张图简单表示一下大概意思, 黑灰的为正常显示, 彩色的是我将每个矩形都随机了RGB颜色, 希望能看明白.

没有评论:

发表评论