0

加载 5M 大小的 3D OBJ 模型时内存不足。调试显示 dalvik 在模拟器或设备上具有 50M 内存限制。我不明白这是为什么。

mIndicesInt = ByteBuffer.allocateDirect(indices.length * INT_SIZE_BYTES).order(ByteOrder.nativeOrder()).asIntBuffer();
mIndicesInt.put(indices).position(0);

我什至将 AVD RAM 增加到 2048M 并将堆增加到 1024M,它没有帮助。它总是以相同的数字停止:

D/setIndices(2270):内存:Pss=67.88 MB,私有=66.09 MB,共享=13.30 MB D/setIndices(2270):maxMem=50331648 D/setIndices(2270):totalMem=50208736 D/setIndices(2270):空闲内存=1963736

OBJ 模型包含 20 多个对象。我删除了几个对象,然后内存不足问题消失了,所以这是每个进程的内存硬限制问题?

有什么处理建议吗?增加 RAM 和堆大小的 AVD 选项也没有效果,为什么?

4

1 回答 1

0

5M 的顶点数据对于移动环境来说是相当多的。如果您还加载纹理,请考虑仅加载压缩纹理。您还可以在将某些资源移至 GPU 驱动程序后释放它们。我会离线准备您的顶点数据,并且只在运行时加载所需的数据。另一种选择是计算部分数据,或直接在顶点/片段着色器处扩展它(例如在 GPU 端生成双切线)。

于 2013-01-28T15:07:25.700 回答