Ich habe FloatBuffer aus einem dynamischen Satz von Floats erstellen müssen (das heißt, ich weiß nicht die Länge vor der Zeit). Der einzige Weg, den ich gefunden habe, ist ziemlich unelegant (unten). Ich nehme an, ich vermisse etwas und es muss eine sauberere/einfachere Methode geben.So erstellen Sie einen FloatBuffer dynamisch
Meine Lösung:
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);
ich meine Puffer verwenden für OpenGL-Befehle also muß ich sie herum halten (das heißt, ist die resultierenden FloatBuffer nicht nur ein temporärer Speicher).
Ich änderte die Frage. Ich muss den FloatBuffer herum halten, also sollten sie idealerweise nicht zu groß sein (wie ich viele haben werde), und ich werde sie nicht wiederverwenden (zu viel). –
Was ist ihr Zweck? Anstelle von 'Vector' kann man 'TFloatArrayList' verwenden http://trove4j.sourceforge.net/javadocs/gnu/trove/list/array/TFloatArrayList.html –
Die OpenGL-API benötigt einen FloatBuffer (oder andere Buffer-Typen) für seine Funktionsparameter. Das heißt, ich stelle sie der API zur Verfügung. –