我正在寫一個基於OpenGL的簡單3D引擎(我知道這裏有很多,但由於某些原因我想學習如何自己做這個)。我對目前的場景圖和類似的東西很滿意,但我對紋理處理非常不滿意。所以我想知道如何正確地做到這一點。如何管理紋理
當我看到互聯網上的示例代碼時,他們從不談論如何管理紋理。他們只是在應用程序啓動時加載一些紋理,展示他們的演示內容,然後退出程序。但是如果我經常改變場景中的東西呢?如果我想要顯示具有10個紋理的場景,然後刪除場景中的節點,那麼不再需要2個紋理,然後添加具有4個新紋理的新節點。所以必須從視頻RAM中刪除2箇舊紋理,並且必須添加4個新紋理。然後,我完全替換整個場景,以便再次使用所有未使用的紋理,並且必須加載新紋理,而之前使用過的紋理以及新場景中也使用過的紋理必須重新使用。這聽起來很複雜。
紋理如何在專業3D引擎中管理?它是一個全局的單例紋理管理器,它跟蹤參考計數器的紋理使用情況並不時清理視頻內存?還是有一種更天才的方法來做到這一點?
一個全球經理參考跟蹤和內存碎片整理是我專業使用的唯一的東西,所以我肯定會說它是一個可行的解決方案。 – BigSandwich 2010-09-19 03:03:19
當然,我只是覺得成本非常高,只有當你有很多人在遊戲中投入大量資產時,價值纔會變得明顯。 – 2010-09-23 18:12:43