2011-08-27 66 views
0

我正在使用3D OpenGL ES視圖創建Android應用程序,該視圖將包含從波前obj文件導入的3D模型。 典型的波前OBJ文件將只包含三角對象和它可能看起來像:將大尺寸數組保存到Android上的文件

v 1.00000 1.00000 0 
v 1.00000 -1.00000 0 
v -1.00000 -1.00000 0 
vt 1.00000 1.00000 0 
vt 1.00000 -1.00000 0 
vt -1.00000 -1.00000 0 
vn 1.00000 1.00000 0 
vn 1.00000 -1.00000 0 
vn -1.00000 -1.00000 0 
f 1/1/1 2/2/2 3/3/3 

在結束這一切將被轉換成浮點數的一個單一(一維)陣列。 問題是這個文件很大,並且將它作爲字符串加載並且處理需要大量時間。 (我們需要將文件加載到行中,然後將它們分成令牌,這需要大量時間和內存) 我正在尋找替代方法和解決方案來存儲一個就緒陣列。 我唯一的想法是讀取.obj文件並創建所需的數組。之後,序列化數組,併爲應用程序的每個下一次執行讀取序列化數組。這是一個好主意,還是有任何其他更好的方式在Android上。 請記住,有大量的數據處理! 我在尋找的是一個很好的解決方案,我認爲我們不需要關心HDD上的空間而只關心加載時間和RAM的使用情況!

回答

0

我前段時間自己開發自己的應用程序(https://market.android.com/details?id=de.hsrm.objectify)時遇到了這個問題,本AFAIK的最佳解決方案是將整個數據序列化並寫入SD卡。從外部存儲保存和加載對象並不像您想象的那麼慢。

加載〜15.000帶紋理的頂點和法線大約需要1秒。至少在我的情況下。