Ho bisogno di creare FloatBuffer da un insieme dinamico di float (cioè, non conosco la lunghezza in anticipo). L'unico modo che ho trovato per fare questo è piuttosto inelegante (sotto). Presumo mi manchi qualcosa e ci deve essere un metodo più pulito/semplice.Come creare un FloatBuffer dinamicamente
La mia soluzione:
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);
Sto usando il mio buffer per i comandi OpenGL quindi ho bisogno di tenerli in giro (cioè, il risultante FloatBuffer non è solo uno spazio temporaneo).
Ho modificato la domanda. Devo tenere il FloatBuffer in giro, quindi idealmente non dovrebbero essere troppo grandi (come ne avrò molti), e non li riutilizzerò (troppo). –
Qual è il loro scopo finale? Invece di usare 'Vector' puoi usare 'TFloatArrayList' http://trove4j.sourceforge.net/javadocs/gnu/trove/list/array/TFloatArrayList.html –
L'API OpenGL richiede un FloatBuffer (o altri tipi di buffer) per i suoi parametri di funzione. Cioè, li fornisco all'API. –