2011-08-27 64 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秒。至少在我的情况下。