[LayaAirIDE 2.0]用了Sprite3D.instantiate方法,在iPhone6上性能降低了80%
import s3d = Laya.Sprite3D;
static s3ds:{[key:string]:s3d;} = {};
static news3d(id):s3d{
return x.s3ds[id].clone() as s3d;//s3d.instantiate(x.s3ds[id]);
}
static loads3d(id, path, handler=null):void{
s3d.load(path, Laya.Handler.create(null, function(sp){
x.s3ds[id] = sp;
if(handler)handler.loadeds3d(id, sp);
}));
}
我首先用loads3d方法加载所有的.lh文件,然后用Sprite3D.instantiate方法加载入场景后,在iPhone6上性能降低了80%,40000个面只有5贞,但是如果不用clone或instantiate,直接每个模型都用s3d.load加载,不进行Sprite3D.instantiate就是30贞。
表现出来的就是场景里有相同的模型一下性能就降低了很多,如果全部加载不同的模型,却是满贞。难道到Sprite3D.instantiate后引擎自动动态合并导致的性能降低?
图1是先用Sprite3D.load加载,然后再Sprite3D.instantiate或clone的,只有4贞。
图2是直接用Sprite3D.load加载后直接使用,没有进行克隆的。
static s3ds:{[key:string]:s3d;} = {};
static news3d(id):s3d{
return x.s3ds[id].clone() as s3d;//s3d.instantiate(x.s3ds[id]);
}
static loads3d(id, path, handler=null):void{
s3d.load(path, Laya.Handler.create(null, function(sp){
x.s3ds[id] = sp;
if(handler)handler.loadeds3d(id, sp);
}));
}
我首先用loads3d方法加载所有的.lh文件,然后用Sprite3D.instantiate方法加载入场景后,在iPhone6上性能降低了80%,40000个面只有5贞,但是如果不用clone或instantiate,直接每个模型都用s3d.load加载,不进行Sprite3D.instantiate就是30贞。
表现出来的就是场景里有相同的模型一下性能就降低了很多,如果全部加载不同的模型,却是满贞。难道到Sprite3D.instantiate后引擎自动动态合并导致的性能降低?
图1是先用Sprite3D.load加载,然后再Sprite3D.instantiate或clone的,只有4贞。
图2是直接用Sprite3D.load加载后直接使用,没有进行克隆的。
没有找到相关结果
已邀请:
要回复问题请先登录
1 个回复
NilZ
赞同来自: