Я использовал FloatBuffers в своем Android-коде некоторое время (скопировал его из некоторого учебника по opengles), но я не могу точно понять, что это за конструкция и зачем она нужна.
Например, этот код (или аналогичный), который я вижу во многих программах для многих людей и в андроидах:
float[] vertices = ...some array...
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
vbb.order(ByteOrder.nativeOrder()); // use the device hardware 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), в отличие от любого другого типа коллекции или простого массива поплавков?
-
Какова идея создания ByteBuffer перед преобразованием его в FloatBuffer?