PV3D优化CPU占用技巧
在PV3D菜单两例中我提到了CPU占用的问题,今天把解决思路在此探讨一下。
在第一版完成后,发现了CPU占用过高的问题。按照常规的方法,先逐步减少透明元素等占用资源最大的“罪魁祸首”,如高光动画,阴影等。但是效果不大(只有5%~10%左右的降幅)。
随后尝试将贴图的MC设置为位图缓存(cacheAsBitmap),但其实这步也是无效的。因为PV3D引擎本身就会把所有的元素做位图缓存再重绘。
再尝试把StageQuality降下来,通常做法是运动的时候把质量设置为LOW,待到运动结束再恢复为HIGH。
但是这种做法还需要一个前提才可能成立:那就是我们假设运动等同于屏幕重绘,也就是说运动时设置屏幕重绘,不运动的时候屏幕不重绘。所以我们必须处理 Event.ENTER_FRAME 事件,使其中的逻辑符合我们的假设,那么优化才可能有效。
那么现在问题的症结已经清晰:PV3D引擎的每帧重绘是最占用资源的操作,我们应该减少不必要的重绘。特别是这种互动导航类型的应用,一旦状态固定,就必须移除重绘。
于是我尝试加入状态判断的逻辑,当检测到运动结束后移除 Event.ENTER_FRAME 的侦听。但是产生了一个致命的问题:一旦renderer.renderScene()不执行,鼠标事件(InteractiveScene3DEvent)也侦听不到了。看来PV3D的互动支持必须依赖于每帧重绘或者是重绘方法其中的一些步骤。接下来就让我们把鼠标事件响应的功能找回来。




