前幾年背鍋的那個專案,打擊了我的信心,
為啥那麼卡,確實是架構的問題。當時開了執行緒池沒錯,但是沒有非同步載入資源,都在渲染的那幀去載入的。
通過我這兩年對引擎架構的整合,直到上週解決了這個問題。
有幾點,
第一,渲染要多執行緒渲染,當時的那個渲染是在主線程渲染。多執行緒渲染時,需要個事件。將 視窗與opengl 上下文繫結後,setevent ,在主線程等待這個事件,確保主線程繼續執行。
第二,載入瓦片資料時非同步載入,開四個執行緒,用訊號量。通過瓦片名稱生成紋理,要求的瓦片名稱是生產者,生成紋理資料是消費者。這裡需要乙個監控者模式,在獲取要求的瓦片資料時加鎖,寫入要更新的資料陣列中,在渲染時,也要加鎖,
第三,預處理時,用四叉樹或八叉樹處理瓦片及其他模型。
第四,在cpu 端,要用攝像機六稜錐過濾掉不在視野內的物體,可以通過物體包圍盒與六稜錐相交判斷,不能只等著osg去過濾。
第五,對於頻繁訪問記憶體的資料,不要用 stl ,而是直接開快取,最好記憶體池。
以前的專案,架構師已經脫離**很多年,所以掌握不了細節了,所以這個鍋我背了。需要細摳,做個好的架構不只是載入個動態鏈結庫,懂幾個設計模式那麼簡單
專案出現的問題及解決方案
前端子路由在傳送非同步請求時,請求路徑中,莫名多了父路徑的路徑名 正常情況是api後面是請求路徑,api反向 後端請求的81埠 方案1 在後端控制器中寫上面埠後的路徑,可以請求成功 方案2 在前端路由配置檔案中不要配置父路由的path路徑,而是使用redirect 比如 1 訪問高德api請求全國城...
Django專案開發中出現的問題及解決
django.db.utils.operationalerror table certify already exists解決 檢視models模組是否有重複的表名。django.db.utils.operationalerror 1045,access denied for user dashbo...
Android 專案更改包名的方法
上一步並沒有修改原始碼的包,只是將工程中涉及包名的地方改了 下面修改原始碼的包名,右鍵要改包名的原始碼包,選擇refactor rename,注意一定要將rename subpackages選上,否則子包不會被更名。有包com1.com2.com3 1和包com1.com2.com3 2,修改包co...