优化:实体绘制更新的性能

pull/1657/MERGE
ChenX 3 years ago
parent 28109c091c
commit 10e5abab1b

@ -339,7 +339,7 @@ export class ExtrudeHole extends Hole
g.KnifeRadius = this.KnifeRadius; g.KnifeRadius = this.KnifeRadius;
g.SetContourCurve(this.ContourCurve); g.SetContourCurve(this.ContourCurve);
g.Thickness = this.Height; g.Thickness = this.Height;
g.ApplyMatrix(this.OCS); g.ApplyMatrix(this.OCSNoClone);
return g; return g;
} }
GetPrintObject3D() GetPrintObject3D()

@ -60,7 +60,7 @@ export class Viewer
private _Width: number; private _Width: number;
private _Height: number; private _Height: number;
private needUpdateEnts = new Set<Entity>(); private _NeedUpdateEnts = new Set<Entity>();//避免某些实体关闭自动更新后没有在渲染时刷新显示,导致显示的是错误的
isLayout = false; isLayout = false;
ViewPorts: ViewportEntity[] = []; ViewPorts: ViewportEntity[] = [];
LayoutScene = new Scene(); LayoutScene = new Scene();
@ -120,7 +120,8 @@ export class Viewer
let self = this; let self = this;
end(new Entity().Update, function () end(new Entity().Update, function ()
{ {
self.needUpdateEnts.add(this); if (!(this as Entity).AutoUpdate)
self._NeedUpdateEnts.add(this);//避免错误的登记需要变更的实体
}); });
end(this.CameraCtrl, this.CameraCtrl.SwitchCamera, () => end(this.CameraCtrl, this.CameraCtrl.SwitchCamera, () =>
@ -314,10 +315,10 @@ export class Viewer
Render() Render()
{ {
for (let e of this.needUpdateEnts) for (let e of this._NeedUpdateEnts)
e.Update(0); e.DeferUpdate();//使用Update(0) 会导致重复记录这个实体,造成性能损耗(或者错误的变更了实体版本)
this.needUpdateEnts.clear(); this._NeedUpdateEnts.clear();
if (this.isLayout) if (this.isLayout)
{ {

Loading…
Cancel
Save