Ale*_*llo 2 java android inputstream opengl-es dynamic-memory-allocation
我目前正在为一个opengles安卓游戏创建一个OBJ导入器.我对java语言比较陌生,所以我对一些事情并不十分清楚.
我有一个数组,它将保存模型中的顶点数量(以及其他一些数组):
float vertices[];
Run Code Online (Sandbox Code Playgroud)
问题是我在使用给出的输入流读取文件之前不知道模型中有多少个顶点.
我可以填写它,因为我需要这样吗?:
vertices[95] = 5.004f; //vertices was defined like the example above
Run Code Online (Sandbox Code Playgroud)
或者我必须事先将其初始化?
如果后者是这种情况,那么找出文件中顶点数量的好方法是什么?一旦我使用inputstreamreader.read()读取它,它就会转到下一行,直到它读取整个文件.我唯一能想到的就是读取整个文件,计算顶点的数量,然后再读取新的初始化数组中的填充.
有没有办法根据需要动态分配数据?
您可以使用ArrayList,它将为您提供所需的动态大小.
List<Float> vertices = new ArrayList<Float>();
Run Code Online (Sandbox Code Playgroud)
您可以添加如下值:
vertices.add(5.0F);
Run Code Online (Sandbox Code Playgroud)
列表将根据您的需求增长.
需要注意的一些事项:ArrayList将保存对象,而不是基本类型.因此它将您提供的浮点值存储为Float对象.但是,很容易从中获取原始浮点值.
如果您绝对需要一个数组,那么在读完整个值列表后,您可以轻松地从List中获取一个数组.
您可以在此处开始阅读Java Collections .
| 归档时间: |
|
| 查看次数: |
1972 次 |
| 最近记录: |