Necesito crear FloatBuffer desde un conjunto dinámico de flotadores (es decir, no sé la longitud con anticipación). La única forma que he encontrado para hacer esto es bastante poco elegante (abajo). Supongo que me falta algo y debe haber un método más simple/más limpio.Cómo crear un FloatBuffer dinámicamente
Mi solución:
Vector<Float> temp = new Vector<Float>();
//add stuff to temp
ByteBuffer bb = ByteBuffer.allocateDirect(work.size() * 4/*sizeof(float)*/);
bb.order(ByteOrder.nativeOrder());
FloatBuffer floatBuf = bb.asFloatBuffer();
for(Float f : work)
floatBuf.put(f);
floatBuf.position(0);
estoy usando mis memorias intermedias para OpenGL comandos por lo tanto necesito para mantenerlos alrededor (es decir, el FloatBuffer resultante no es sólo un espacio temporal).
Modifiqué la pregunta. Necesito mantener el FloatBuffer, por lo que idealmente no deberían ser demasiado grandes (ya que tendré muchos), y no voy a reutilizarlos (demasiado). –
¿Cuál es su objetivo final? En lugar de utilizar un 'Vector' puede usar 'TFloatArrayList' http://trove4j.sourceforge.net/javadocs/gnu/trove/list/array/TFloatArrayList.html –
La API de OpenGL requiere un FloatBuffer (u otros tipos de Buffer) para sus parámetros de función. Es decir, los proporciono a la API. –