首页 > 其他分享 >Layabox的2d精灵的性能优化

Layabox的2d精灵的性能优化

时间:2023-01-30 17:04:57浏览次数:40  
标签:缓存 渲染 drawcall 瓦块 精灵 2d cacheAs Layabox 图片


在使用Layabox的2d精灵时,我们会需要很多渲染图片的需求,那么,如果做到使用最小的代价实现图片的渲染呢。

合并图集

为什么要合并图集呢。如果你一个图片是由多张图片组成的,正常情况,在webgl模式下,渲染一张图片,就是一次drawcall,但是呢,如果纹理没有切换,只是切换渲染的位置,Layabox会自动给你合批,你相当于一次drawcall就实现了整张图片的渲染。

Layabox的2d精灵的性能优化_Layabox

这个问题发现是我之前测试过官网的瓦块图时,发现设置cacheAs为normal时,它的drawcall只需要一次。而我自己设置的瓦块图,需要渲染多少个瓦块,就有多少drawcall。后来就发现了这个,如果当前的瓦块都属于一张图集,那么,自动合批,会一次性给你渲染出来。
所以,如果都是一个精灵使用的,而且图片还不大,可以合并成一张图片使用,可以降低性能损耗。

设置cacheAs

如果出现多个单个图片,或者无法合并成图集的情况。我们还要想办法降低性能。那就是用到cacheAs方法,这个属性有三个值,'none’就是默认,不缓存。‘normal’就是正常缓存,会把你的精灵渲染的内容,生成graphics的命令模式,但是性能降低不是很多,多张图片切换,还是有很多的drawcall。‘bitmap’直接将渲染完成的纹理缓存起来,这种会增加内存和缓存的占用,如果你的一张精灵就几千次drawcall渲染出来,使用这种方式你可以节省几千次的drawcall。
那么,如果地图过大的话,我们就要灵活使用,即不能占用太大的内存和缓存,还能减少drawcall的方法。
我的实现方式,是增加地图块对象,每个地图块固定宽高,把整个地图分成多张地图块。根据当前地图显示范围进行显示隐藏。显示,设置精灵的cacheAs为’bitmap’,并渲染一次即可。而无法显示的瓦块,我们可以把cacheAs设置为’none’,并且将其graphics调用clear事件清空画布。

希望我总结的经验,能让大家有些收获。


标签:缓存,渲染,drawcall,瓦块,精灵,2d,cacheAs,Layabox,图片
From: https://blog.51cto.com/u_15948039/6027342

相关文章

  • 2D转换 动画效果
    2D转换定义:2D变换,是在一个平面对元素进行的操作。可以对元素进行水平或者垂直位移、旋转或者拉伸。确定坐标系默认状态下,x轴是水平的,向右为正。默认状态下,y轴是垂直的,向......
  • Graphite: a vision for the future of 2D content creation.
    https://graphite.rs/blog/graphite-a-vision-for-the-future-of-2d-content-creation/https://editor.graphite.rs/Graphite:avisionforthefutureof2Dcontent......
  • vs2015和cocos2d-x-3.17.2 开发环境搭建
    vs2015和cocos2d-x-3.17.2开发环境搭建 cocos2d-x当前最新稳定版本是3.17.2,需要使用vs2015来构建。首先是安装vs2015。选择安装下面的vs版本:cn_visual_studio_community_2......
  • 使用CNN进行2D路径规划
    卷积神经网络(CNN)是解决图像分类、分割、目标检测等任务的流行模型。本文将CNN应用于解决简单的二维路径规划问题。主要使用Python,PyTorch,NumPy和OpenCV。任务简单......
  • Unity2D: 重新加载场景后场景暂停
    SceneManager.LoadSceneAsync(01);所有动画、脚本停止运行,改变timeScale没有用Time.timeScale=1;解决办法:SceneManager.LoadSceneAsync(01,LoadSceneMode.Single......
  • macOS Ventura 13.2 (22D49) 正式版发布,ISO、IPSW、PKG 下载
    macOSVentura13正式版现已发布!请访问原文链接:https://sysin.org/blog/macOS-Ventura/,查看最新版。原创作品,转载请保留出处。2023年1月23日(北京时间24日临晨),ma......
  • macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
    macOSVentura13.2(22D49)BootISO原版可引导镜像本站下载的macOSVentura软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟......
  • Unity2D:Update()下 Input.GetKey/GetKeyDown/GetButtonDown失效
    代码如下usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassPauseMenu:MonoBehaviour{publicGameObjectPauseMe......
  • RectMask2D裁剪区域计算
    裁剪区域计算涉及的几种情况1)只有一个RectMask2D时,裁剪区域就是RectMask2D所在的区域 2)RectMask2D嵌套RectMask2D时:a)RectMask2D(红色)的祖先节点中没有RectMas......
  • unity2D 图片大小的问题
    提问:两个sprite,一个pixcelperunit是20,一个是32,然后直接拖进去,但是两个图片显示出来大小都一样,这应该不对吧,看上去大小应该不同才对。解答: 仅供参考:用一个,640宽......