Chrome任务管理器显示GPU内存过高的问题
Closed this issue · 6 comments
cyitianyou commented
您好!
我在Canvas画布上显示了一个Easycanvas.webglShapes.custom
组件,
跟随鼠标的mousemove事件通过this.updateWebglStyle("vertices")
的方式不断的修改组件的顶点坐标。
操作几次之后Chrome浏览器显示当前GPU内存超过1G以上,整个浏览器会变得比较卡
想问下这类现象是因为WebGL中的缓存没有及时释放的原因吗?这种问题可以通过js代码解决吗?
c-zhuo commented
嗯应该是updateWebglStyle时没有释放缓存,晚上到家看一下
c-zhuo commented
这两天发个版本修复;可以暂时在updateWebglStyle上面包装一个新的API使用,验证一下是否解决
例如
Easycanvas.sprite.prototype.updateWebglStyle_fix = function (key, value) {
if (this.webgl && this.webgl[key]) {
this.$canvas.$gl.deleteBuffer(this.webgl[key].$cacheBuffer);
}
this.updateWebglStyle(key, value);
}
cyitianyou commented
好的,我先按照您的方法测试一下。
期待Easycanvas的新版本!
cyitianyou commented
cyitianyou commented
试验发现setMaxFps方法更好用一点!
c-zhuo commented
@cyitianyou 好的,这样的话也可能是mousemove的触发频率太高了,例如一帧触发了多次mousemove。
可以参考
sprite.addEventListener('mousemove', somehandle, 20)
绑定事件,设置触发间隔,单位ms
整个实例的话,可以painter.addEventListener('mousemove', somehandle, 20)