星期五, 1月 22, 2010

改善PV3D對CPU的效能佔用

PV3D引擎的每幀重繪是最佔用資源的操作,我們應該減少不必要的重繪。特別是這種互動導航類型的應用,一旦狀態固定,就必須移除重繪。

然而一旦renderer.renderScene()不執行,鼠標事件(InteractiveScene3DEvent)也偵聽不到了。看來PV3D的互動支持必須依賴於每幀重繪或者是重繪方法其中的一些步驟。

引用 ooph's blog - PV3D優化CPU佔用技巧


自己的方法是:
建立兩個function: "addRenderListener" "removeRenderListener"
當動畫開始執行時呼叫 addRenderListener 把舞台品質調低,並開啟渲染引擎。
當動畫結束後再呼叫 removeRenderListener 把舞台品質改回來,並關閉渲染引擎。



import flash.display.StageQuality;
private function addRenderListener(e:Event = null):void
{
stage.quality = StageQuality.LOW; //若品質不佳則改用MEDIUM
this.addEventListener(Event.ENTER_FRAME, onEventRender3D);
trace("add");
}
private function removeRenderListener(e:Event = null):void
{
stage.quality = StageQuality.HIGH;
this.removeEventListener(Event.ENTER_FRAME, onEventRender3D);
trace("remove");
}


但是這是未使用到InteractiveScene3DEvent滑鼠互動的狀況,
需要時再參考 ooph's blog - PV3D優化CPU佔用技巧研究吧..

沒有留言:

張貼留言