为什么是 FloatBuffer 而不是 float[]?
我已经在我的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 之前,创建它背后的想法是什么?