签到

05月05日
尚未签到

共有回帖数 0

    孤独的狼

    等级:
    下午研究了下,网上写的实在不靠谱,全特么是照搬的,我只好自己去看,然后,有那么一点点心得……
    一般来说,使用相同材质的模型的各个子网格,可以合并为一个网格,以大大地减少DrawCall,如果一个模型中子网格很多并且使用不同材质,也可以合并,只不过是合并成一个渲染对象的子网格和材质列表,网格数量还是那么多,材质还是那么多,虽然DrawCall不见少不过据说可以稍微提高效率(没仔细对比过不做评论),对了,遇到这种情况别忘了砍死你家美工……
    还有,使用合并,要注意的是,合并后的东西,都视为一个网格物体,也就是说,假如一个箱子在西边1km以外,另一个箱子在摄像机面前,如果你把两个箱子合并了网格并且理所当然的把1km以外的箱子隐藏了……别问我会出现什么情况,自己体会一下才深刻……
    下面是针对SkinnedMeshRenderer的所有子网格都是使用相同一个材质(多个的不好比较,合并的适合不容匹配准确,所以告诉你家美工,材质还是只生一个好啊~)注意!必须所有需要合并的网格都共用同一个材质!另外MeshRenderer的合并,Unity有自带的CombineChildren,直接用就是了
    合并成子网格列表和材质列表的,只需把
    _r.materials = new Material[] {lmat[0]};改成_r.materials = lmat.ToArray ();
    _r.sharedMesh.CombineMeshes (lcom.ToArray(),true,false);改成_r.sharedMesh.CombineMeshes (lcom.ToArray(),false,false);
    上图片了,懒得打字,打出来还特么黑白的……
    换装什么的,多个材质合并什么的,道理呢差不多,各位自己解决了,俺要继续加班去鸟,不送……


    楼主 2015-10-28 21:26 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知