- 当前 Bug 的表现(可附上截图)
小游戏iOS端,点击右上角退出键,再点击回到小游戏。会先执行wx.onShow里的回调,再生成屏幕上用于显示的canvas。
wx onShow
[wxgl]Creating ScreenCanvas (WebGL): size: 1334x750, style: 375x667, antialias: yes (2 samples), preserveDrawingBuffer: yes
[wxgl]Creating ScreenCanvas (WebGL): size: 1334x750, style: 667x375, antialias: yes (2 samples), preserveDrawingBuffer: yes
- 预期表现
先生成屏幕上用于显示的canvas,再执行wx.onShow里的回调。
- Bug复现原理
我是用WebGL自己做的更新渲染。为了降低gpu负荷,每帧都会检测当前帧的所有显示对象的属性是否有变化,如果3帧以上没变化,则不再重绘当前帧内容。如果有变化,则清屏,重绘所有显示对象。为了每次interrupt之后回到游戏时,能够重绘屏幕,我在wx.onShow中设置了强制重绘全屏元素。但是在上述情况下,重绘之后原canvas还没被设置到屏幕上,所以导致没有重绘,所有对象没有被渲染。这个情况在安卓端是能够正常显示的。希望能够调整生成屏幕canvas和onshow之间的执行顺序,使效果能和安卓端一致。
本文网址:http://www.91bianli.com/weixinxiaochengxu/132.html