我正在使用圖形引擎的關卡編輯器。最近,隨着一個項目的擴展,我遇到了內存問題。特別是,這個級別非常大,需要加載大約300個不同大小的紋理。一些紋理像2048x2048那麼大,其他像256x256或512x512更小。無論如何,編輯器會爲此級別消耗1.3GB的內存,並且某些紋理因爲拋出內存異常而無法加載。那麼我在這裏有什麼解決方案?XNA內存中加載的紋理太多
現在,我能想到的唯一解決方案是根據可見區域將級別劃分爲更小的部分並根據需要加載紋理。但我相信這會在現場導航時大大減緩性能。有什麼想法嗎?關於這個問題,關卡編輯應該有一些標準的方法。
首先,感謝您的回答。現在,雖然我不熟悉基於瓦片的方法,但是一個紋理可以被多個對象使用。它不會在使用它的每個對象的內存中多次加載。我想說明紋理保存在Dictionary中。我不使用內容管理器,我使用Texture2D.FromFile加載紋理。我可以嘗試按需求方式。使用內容管理器會保存任何內存嗎?我想不是,所以我應該堅持已經實施的方法。 P.S我只負責這些工具,「測量」由其他人完成:) –
muku
2011-01-21 15:16:46
哦,我明白了......內容管理器實際上只是運行時代碼,紋理貫穿內容管道。當你試圖運行遊戲時,我認爲你的意思是你的內存不足。但是你描述的機制是相同的概念......存儲對紋理的引用,以及在移動時加載/卸載。但要記住,要比屏幕略大一些,這樣如果用戶做小動作,就不必經常加載/重新加載。 – 2011-01-21 15:25:22