Мне нужно создать FloatBuffer из динамического набора поплавков (, то есть я не знаю длину заранее ). Единственный способ, который я нашел для этого, довольно неэлегантный (ниже ). Я предполагаю, что что-то упускаю, и должен быть более чистый/простой метод.
Мое решение:
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);
Я использую свои буферы для команд OpenGL, поэтому мне нужно держать их в пределах (, то есть полученный FloatBuffer не является просто временным пространством ).