Pourquoi FloatBuffer au lieu de float[]?

J'ai été en utilisant FloatBuffers dans mon code Android pour un certain temps (copié à partir d'une opengles tutoriel), mais je ne comprends pas exactement ce que cette construction est et pourquoi elle est nécessaire.

Par exemple ce code (ou similaire), je vois dans beaucoup de beaucoup de peuples code et android tutoriels:

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

Cela semble terriblement bavard et ennuyeux pour quelque chose qui, autant que je peux dire c'est juste une fantaisie wrapper autour d'un tableau de float.

Questions:

  • Quelle est la justification de ce type de classe (ByteBuffer, FloatBuffer), par opposition à tout autre type de collection ou un tableau simple de flotteurs?

  • Quelle est l'idée derrière la création d'un ByteBuffer avant de le convertir en un FloatBuffer?

InformationsquelleAutor Tim | 2012-05-22