gpt4 book ai didi

android - 在 Android 中为 OpenGL 加载大型数组数据的正确方法

转载 作者:太空狗 更新时间:2023-10-29 15:04:06 25 4
gpt4 key购买 nike

我正在使用 OpenGL ES 2.0 在 Android 中创建游戏。我已经在 Blender 中对所有需要的对象进行了建模,并将它们导出到一个 OBJ 文件中。 OBJ 文件包含类似这样的对象的顶点数据和面:

....
v 0.007322 -0.046194 -0.007322
v 0.005866 -0.046194 0.000000
v -0.000000 -0.042275 0.000000
v -0.000000 -0.040898 -0.010355
....
f 5 1 4
f 1 2 3
f 89 88 105
f 103 104 89
....

这个数据对于某些对象来说是相当大的。所以我的问题是,将它加载到我的应用程序以便我可以在 FloatBuffer 对象中使用它的最快方法是什么?

经过一番搜索,我发现了以下方法:

  1. OBJ文件复制到应用程序的资源文件夹中,每次在运行时解析它并加载到FloatBuffer对象中。
  2. 解析 OBJ 文件中的顶点数据,并使用 ObjectOutputStream 或任何其他方法将其永久存储在另一个文件中。然后将这个新生成的文件复制到资源文件夹中,以便在运行时加载它。
  3. OBJ文件中的顶点数据直接复制到应用程序代码中

例子

public class ObjectData {
public float[] vertices = new float[] {
0.007322f, -0.046194f, -0.007322f, ..... // Can be more than 1000 elements!
}
}

但这种方法会产生另一个问题,代码有时会超过 Java 64K code_length 限制。

谁能给我一些建议,告诉我哪种方法最合适,或者是否有其他更好的方法来解决这个问题?

最佳答案

这是我认为最好的方式,我也在做同样的事情。该方法对于许多大型对象来说非常慢,因此您在应用运行时可能需要一些加载时间。

关于android - 在 Android 中为 OpenGL 加载大型数组数据的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23552608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com