日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Away3D 的实体收集器Bug

發布時間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Away3D 的实体收集器Bug 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在改Away3D源碼的時候遇到個很郁悶的問題,發現創建的Mesh 釋放不掉。

分析源碼發現 EntityListItemPool 類中邏輯Bug在getItem()函數中發現_poolSize 對象池大小如果夠用的情況下 它采用的方式是復用EntityListItem

那么假設我刪除了場景上有10個對象我全部刪除了然后我再創建9個 這時候總有1個對象是被緩存著的。一直要等到我創建第10個對象他才會被釋放掉。

沒轍了跑到 看看對象銷毀流程吧。

對象被銷毀時會調用 Scene3D 的 unregisterEntity函數,這個函數只是刪除了Scene3D 和 顯示對象的引用。但是EntityListItemPool中還是存在實例引用

?看了看收集器 每次都要經過 Scene3D 的 traversePartitions函數。

那我先在unregisterEntity函數調用的時候做一次記錄把要刪除的顯示對象添加到一個列表中。

private var _unregisterEntityList:Vector.<Entity> = new Vector.<Entity>;
??/**
?? * When an entity is removed from the scene, or from one of its children, remove it from its former partition tree.
?? * @private
?? */
??arcane function unregisterEntity(entity : Entity) : void
??{
???_unregisterEntityList.push(entity);
???entity.implicitPartition.removeEntity(entity);???
??}

這樣在下一幀執行渲染的時候我就知道要釋放掉哪些對象了。然后修改traversePartitions函數.

public function traversePartitions(traverser : PartitionTraverser) : void
??{
???var i : uint;
???var len : uint = _partitions.length;
???if(traverser is EntityCollector)
???{
????while(_unregisterEntityList.length)
????{
?????var _entity:Entity = _unregisterEntityList.shift();
?????(traverser as EntityCollector).entityListItemPool.unmap(_entity);
?????(traverser as EntityCollector).renderableListItemPool.unmap(_entity);
????}
???}
???traverser.scene = this;

???while (i < len)
????_partitions[i++].traverse(traverser);
??}

每次在新的一輪收集前把上一幀要清楚掉的對象全部干掉。

然后跑到entityListItemPool 類里添加一段代碼:

public function unmap(mesh:Entity) : void
??{
???var _mesh:Mesh = mesh as Mesh;
???for(var j:int =0;j<_mesh.numSubMesh;j++)
???{
????for(var i:int = 0; i < _pool.length; i++)
????{
?????if((_pool[i].renderable is SubMesh) && (_pool[i].renderable as SubMesh).parentMesh && (_pool[i].renderable as SubMesh).parentMesh == _mesh)
?????{
??????(_pool[i].renderable as SubMesh).parentMesh = null;
??????_pool.splice(i,1);
??????_poolSize --;
??????continue;
?????}
????}
???}
??}

?

這樣保證了對象的釋放。OK 這下好了

測試下了一下沒有問題全部乖乖的垃圾回收了。

轉載于:https://www.cnblogs.com/ch06src/p/3874428.html

總結

以上是生活随笔為你收集整理的Away3D 的实体收集器Bug的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本视频一区二区 | 成人一区二区三区四区 | 色版视频| 日韩av网址在线观看 | 午夜福利电影一区 | 精品人妻一区二区三区麻豆91 | 午夜精品久久久久久久91蜜桃 | av无码精品一区二区三区 | 日韩精品中文字 | 免费av观看网址 | 日本老妇性生活 | 亚洲激情一区二区三区 | 久久久精品久久久久久 | 九九99精品视频 | 老司机深夜福利网站 | 波多野结衣潜藏淫欲 | av先锋影音| 国产一区中文 | 真实的国产乱xxxx在线 | 伦伦影院午夜理伦片 | 九一精品一区 | 97精品视频 | 神秘马戏团在线观看免费高清中文 | 国产黄视频在线观看 | 美女让男人捅 | 夜夜嗨av一区二区三区网页 | 美梦视频大全在线观看高清 | 激情国产 | av网址免费观看 | 国产乱淫av片免费看 | 99久久久无码国产精品性波多 | 国产精品午夜未成人免费观看 | 日韩精品色 | 亚洲精品一区二 | 免费看日产一区二区三区 | 激情视频免费在线观看 | 欧美自拍一区 | 久久伊人成人 | 欧美精产国品一二三区 | 成人免费视频网 | 91综合国产 | 91爱视频 | 欧美在线日韩在线 | 五月天婷婷社区 | 熟妇人妻无乱码中文字幕真矢织江 | 中文字幕丝袜诱惑 | 福利片av | 超碰97自拍 | 亚洲精品无码久久久 | 日韩经典午夜福利发布 | 欧美性受xxxxx | 国产精品免费视频一区二区三区 | 91热久久| 午夜视频在线观看免费视频 | 国产高清视频免费在线观看 | 成人免费看视频 | 免费成人高清 | 蜜臀av性久久久久av蜜臀妖精 | 天堂在线一区 | 亚洲色图校园春色 | 在线亚洲一区二区 | 处破女av一区二区 | 色悠悠在线视频 | 亚洲区视频 | 超碰97在线看 | 免费av网页 | 91av导航 | 少妇精品无码一区二区免费视频 | 国产毛片基地 | 亚欧日韩av| xxxx日本高清 | 天堂色av| 天天射综合 | 巨胸喷奶水www久久久免费动漫 | aa免费视频 | caopeng在线视频| 欧美做受xxxxxⅹ性视频 | 日韩少妇裸体做爰视频 | 天堂аⅴ在线最新版在线 | japansexxxxhd医生 夜夜操导航 | 高h捆绑拘束调教小说 | 日操夜操天天操 | 国产成人自拍一区 | 成人精品电影 | 在线观看免费中文字幕 | 国产精品久久久久久久久免费看 | 亚洲天堂二区 | 偷拍视频一区二区 | 超碰狠狠操 | 亚洲清色 | 欧洲av无码放荡人妇网站 | 亚洲狠狠操| 黄色成人在线观看 | 久久精品亚洲一区 | 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 国产特级视频 | 国产又黄又粗又长 | a级黄色片免费看 | 亚洲成熟少妇 |