Почему FloatBuffer вместо float []?

Я некоторое время использовал FloatBuffers в своем коде для Android (скопировал его из какого-то учебника по 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) в отличие от любой другой коллекции или простого массива с плавающей запятой?

  • Какова идея создания ByteBuffer перед его преобразованием в FloatBuffer?

44
задан Tim 22 May 2012 в 06:53
поделиться