我在我的 Android 代码中使用 FloatBuffers 已经有一段时间了(从一些 opengles 教程中复制了它),但我无法准确理解这个构造是什么以及为什么需要它。
例如,我在许多人的代码和 android 教程中看到的这段代码(或类似代码):
float[] vertices = ...some array...
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
vbb.order(ByteOrder.nativeOrder()); // use the device hardware's native byte order
FloatBuffer fb = vbb.asFloatBuffer(); // create a floating point buffer from the ByteBuffer
fb.put(vertices); // add the coordinates to the FloatBuffer
fb.position(0); // set the buffer to read the first coordinate
这似乎非常冗长和凌乱,据我所知,这只是一个花车数组的精美包装。
问题:
与任何其他类型的集合或简单的浮点数组相比,这种类型的类(ByteBuffer、FloatBuffer)的理由是什么?
在将其转换为 FloatBuffer 之前创建 ByteBuffer 的想法是什么?